import java.awt.BorderLayout; import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import java.io.FileNotFoundException; import java.util.ArrayList; import java.util.Scanner; import javax.swing.JFrame; import javax.swing.JTextArea; import javax.swing.JTextField; public class AllWordsContainingTheSubstring extends JFrame { private static final long serialVersionUID = 1L; public static void main(String[] args) { // Construct an instance of this // class and show it AllWordsContainingTheSubstring aWindow = new AllWordsContainingTheSubstring(); aWindow.setVisible(true); } private JTextField substring = new JTextField(); private JTextArea wordsWithSubstring = new JTextArea(); private ArrayList allWords; public AllWordsContainingTheSubstring() { // read all words into the list of words getAllWords(); // Lay out the GUI, initialize the instance variable setSize(250, 400); setLocation(50, 100); setTitle("Show words"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container cp = getContentPane(); cp.add(substring, BorderLayout.NORTH); cp.add(wordsWithSubstring, BorderLayout.CENTER); wordsWithSubstring.setEditable(false); substring.addActionListener(new TextFieldListener()); } private void getAllWords() { allWords = new ArrayList(); Scanner s = null; try { s = new Scanner(new File("words.txt")); } catch (FileNotFoundException e) { System.out.println("words.txt not found"); } while (s.hasNextLine()) { allWords.add(s.next()); } } private class TextFieldListener implements ActionListener { public void actionPerformed(ActionEvent ae) { wordsWithSubstring.setText(""); String search = substring.getText().toLowerCase(); for (int i = 0; i < allWords.size(); i++) { String nextWord = allWords.get(i); if (nextWord.indexOf(search) >= 0) { wordsWithSubstring.append(nextWord + "\n"); } } wordsWithSubstring.validate(); } } }