1 2 3 package com.toy.anagrams.ui; 4 5 import com.toy.anagrams.lib.WordLibrary; 6 import java.awt.Dimension ; 7 import java.awt.Point ; 8 import java.awt.Toolkit ; 9 import java.awt.event.ActionListener ; 10 import java.awt.event.WindowListener ; 11 import javax.swing.JFrame ; 12 13 16 public class Anagrams extends JFrame { 17 18 public static void main(String [] args) { 19 new Anagrams().setVisible(true); 20 } 21 22 private int wordIdx = 0; 23 24 25 public Anagrams() { 26 initComponents(); 27 getRootPane().setDefaultButton(guessButton); 28 scrambledWord.setText(WordLibrary.getScrambledWord(wordIdx)); 29 pack(); 30 guessedWord.requestFocusInWindow(); 31 Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); 33 Dimension frameSize = getSize(); 34 setLocation(new Point ((screenSize.width - frameSize.width) / 2, 35 (screenSize.height - frameSize.width) / 2)); 36 } 37 38 43 private void initComponents() { java.awt.GridBagConstraints gridBagConstraints; 45 46 mainPanel = new javax.swing.JPanel (); 47 scrambledLabel = new javax.swing.JLabel (); 48 scrambledWord = new javax.swing.JTextField (); 49 guessLabel = new javax.swing.JLabel (); 50 guessedWord = new javax.swing.JTextField (); 51 feedbackLabel = new javax.swing.JLabel (); 52 buttonsPanel = new javax.swing.JPanel (); 53 guessButton = new javax.swing.JButton (); 54 nextTrial = new javax.swing.JButton (); 55 mainMenu = new javax.swing.JMenuBar (); 56 fileMenu = new javax.swing.JMenu (); 57 aboutMenuItem = new javax.swing.JMenuItem (); 58 exitMenuItem = new javax.swing.JMenuItem (); 59 60 setTitle("Anagrams"); 61 addWindowListener(new java.awt.event.WindowAdapter () { 62 public void windowClosing(java.awt.event.WindowEvent evt) { 63 exitForm(evt); 64 } 65 }); 66 67 mainPanel.setLayout(new java.awt.GridBagLayout ()); 68 69 mainPanel.setBorder(new javax.swing.border.EmptyBorder (new java.awt.Insets (12, 12, 12, 12))); 70 mainPanel.setMinimumSize(new java.awt.Dimension (297, 200)); 71 scrambledLabel.setText("Scrambled Word:"); 72 gridBagConstraints = new java.awt.GridBagConstraints (); 73 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 74 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; 75 gridBagConstraints.insets = new java.awt.Insets (0, 0, 12, 6); 76 mainPanel.add(scrambledLabel, gridBagConstraints); 77 78 scrambledWord.setColumns(20); 79 scrambledWord.setEditable(false); 80 gridBagConstraints = new java.awt.GridBagConstraints (); 81 gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; 82 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 83 gridBagConstraints.weightx = 1.0; 84 gridBagConstraints.insets = new java.awt.Insets (0, 0, 12, 0); 85 mainPanel.add(scrambledWord, gridBagConstraints); 86 87 guessLabel.setDisplayedMnemonic('Y'); 88 guessLabel.setLabelFor(guessedWord); 89 guessLabel.setText("Your Guess:"); 90 gridBagConstraints = new java.awt.GridBagConstraints (); 91 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 92 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; 93 gridBagConstraints.insets = new java.awt.Insets (0, 0, 20, 6); 94 mainPanel.add(guessLabel, gridBagConstraints); 95 96 guessedWord.setColumns(20); 97 gridBagConstraints = new java.awt.GridBagConstraints (); 98 gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; 99 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 100 gridBagConstraints.weightx = 1.0; 101 gridBagConstraints.insets = new java.awt.Insets (0, 0, 20, 0); 102 mainPanel.add(guessedWord, gridBagConstraints); 103 104 feedbackLabel.setText(" "); 105 gridBagConstraints = new java.awt.GridBagConstraints (); 106 gridBagConstraints.gridx = 1; 107 gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; 108 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 109 gridBagConstraints.weightx = 1.0; 110 gridBagConstraints.insets = new java.awt.Insets (0, 0, 20, 0); 111 mainPanel.add(feedbackLabel, gridBagConstraints); 112 113 buttonsPanel.setLayout(new java.awt.GridBagLayout ()); 114 115 guessButton.setMnemonic('G'); 116 guessButton.setText("Guess"); 117 guessButton.setToolTipText("Guess the scrambled word."); 118 guessButton.addActionListener(new java.awt.event.ActionListener () { 119 public void actionPerformed(java.awt.event.ActionEvent evt) { 120 guessedWordActionPerformed(evt); 121 } 122 }); 123 124 gridBagConstraints = new java.awt.GridBagConstraints (); 125 gridBagConstraints.gridheight = java.awt.GridBagConstraints.REMAINDER; 126 gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTHEAST; 127 gridBagConstraints.weightx = 1.0; 128 gridBagConstraints.weighty = 1.0; 129 gridBagConstraints.insets = new java.awt.Insets (0, 0, 0, 6); 130 buttonsPanel.add(guessButton, gridBagConstraints); 131 132 nextTrial.setMnemonic('N'); 133 nextTrial.setText("New Word"); 134 nextTrial.setToolTipText("Fetch a new word."); 135 nextTrial.addActionListener(new java.awt.event.ActionListener () { 136 public void actionPerformed(java.awt.event.ActionEvent evt) { 137 nextTrialActionPerformed(evt); 138 } 139 }); 140 141 gridBagConstraints = new java.awt.GridBagConstraints (); 142 gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; 143 gridBagConstraints.gridheight = java.awt.GridBagConstraints.REMAINDER; 144 gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTHEAST; 145 gridBagConstraints.weighty = 1.0; 146 buttonsPanel.add(nextTrial, gridBagConstraints); 147 148 gridBagConstraints = new java.awt.GridBagConstraints (); 149 gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; 150 gridBagConstraints.gridheight = java.awt.GridBagConstraints.REMAINDER; 151 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; 152 gridBagConstraints.weighty = 1.0; 153 mainPanel.add(buttonsPanel, gridBagConstraints); 154 155 getContentPane().add(mainPanel, java.awt.BorderLayout.CENTER); 156 157 fileMenu.setMnemonic('F'); 158 fileMenu.setText("File"); 159 aboutMenuItem.setMnemonic('A'); 160 aboutMenuItem.setText("About"); 161 aboutMenuItem.setToolTipText("About"); 162 aboutMenuItem.addActionListener(new java.awt.event.ActionListener () { 163 public void actionPerformed(java.awt.event.ActionEvent evt) { 164 aboutMenuItemActionPerformed(evt); 165 } 166 }); 167 168 fileMenu.add(aboutMenuItem); 169 170 exitMenuItem.setMnemonic('E'); 171 exitMenuItem.setText("Exit"); 172 exitMenuItem.setToolTipText("Quit Team, Quit!"); 173 exitMenuItem.addActionListener(new java.awt.event.ActionListener () { 174 public void actionPerformed(java.awt.event.ActionEvent evt) { 175 exitMenuItemActionPerformed(evt); 176 } 177 }); 178 179 fileMenu.add(exitMenuItem); 180 181 mainMenu.add(fileMenu); 182 183 setJMenuBar(mainMenu); 184 185 } 187 private void aboutMenuItemActionPerformed(java.awt.event.ActionEvent evt) { new About(this).setVisible(true); 189 } 191 private void nextTrialActionPerformed(java.awt.event.ActionEvent evt) { wordIdx = (wordIdx + 1) % WordLibrary.getSize(); 193 194 feedbackLabel.setText(" "); 195 scrambledWord.setText(WordLibrary.getScrambledWord(wordIdx)); 196 guessedWord.setText(""); 197 getRootPane().setDefaultButton(guessButton); 198 199 guessedWord.requestFocusInWindow(); 200 } 202 private void exitMenuItemActionPerformed(java.awt.event.ActionEvent evt) { System.exit(0); 204 } 206 private void guessedWordActionPerformed(java.awt.event.ActionEvent evt) { if (WordLibrary.isCorrect(wordIdx, guessedWord.getText())){ 208 feedbackLabel.setText("Correct! Try a new word!"); 209 getRootPane().setDefaultButton(nextTrial); 210 } else { 211 feedbackLabel.setText("Incorrect! Try again!"); 212 guessedWord.setText(""); 213 } 214 215 guessedWord.requestFocusInWindow(); 216 } 218 private void exitForm(java.awt.event.WindowEvent evt) { System.exit(0); 220 } 222 private javax.swing.JMenuItem aboutMenuItem; 224 private javax.swing.JPanel buttonsPanel; 225 private javax.swing.JMenuItem exitMenuItem; 226 private javax.swing.JLabel feedbackLabel; 227 private javax.swing.JMenu fileMenu; 228 private javax.swing.JButton guessButton; 229 private javax.swing.JLabel guessLabel; 230 private javax.swing.JTextField guessedWord; 231 private javax.swing.JMenuBar mainMenu; 232 private javax.swing.JPanel mainPanel; 233 private javax.swing.JButton nextTrial; 234 private javax.swing.JLabel scrambledLabel; 235 private javax.swing.JTextField scrambledWord; 236 238 } 239 | Popular Tags |