今、swingを使って、文字列の入力をした後に、ボタンを押すと、ある関数によって文字列が変換され、それがアウトプットのテキストフィールドに表示されるアプリケーションを作成しています。内部クラスを使ってaddActionListenerを使用しようと思っているのですが、ボタンの関連付けのところで困っています。外部クラス内で宣言、内部クラス内で宣言の二パターンを試したのですが、両方ともコンパイルエラーになってしまいます。よろしくお願いします。
java
1import java.awt.*; 2import java.awt.event.*; 3import javax.swing.JButton; 4import javax.swing.JComboBox; 5import javax.swing.JFrame; 6import javax.swing.JLabel; 7import javax.swing.JPanel; 8import javax.swing.JTextField; 9 10public class CaesarFrame{ 11 /** 12 * 13 */ 14 private static final long serialVersionUID = 1L; 15 JFrame frame; 16 JTextField textField1, textField2; 17 JButton button1; 18 JPanel panel1, panel2; 19 JComboBox<Object> comboBox1; 20 Object[] ob = {'A','B','C','D','E','F','G','H','I','J','K','L' 21 ,'M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'}; 22 Container contentPane; 23 JLabel label; 24 25 CaesarFrame(){ 26 27 28 frame = new JFrame("SwingLab"); 29 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 30 frame.setSize(400, 110); 31 frame.setLayout(new BorderLayout()); 32 frame.setLocationRelativeTo(null); 33 34 35 contentPane = frame.getContentPane(); 36 textField1 = new JTextField(20); 37 textField2 = new JTextField(28); 38 textField2.setEditable(false); 39 button1 = new JButton("Code!"); 40 41 comboBox1 = new JComboBox<Object>(ob); 42 43 44 label = new JLabel("Output:"); 45 46 panel1 = new JPanel(); 47 panel2 = new JPanel(); 48 49 panel1.add(comboBox1); 50 panel1.add(textField1); 51 panel1.add(button1); 52 53 panel2.add(label); 54 panel2.add(textField2); 55 56 contentPane.add(panel1, BorderLayout.NORTH); 57 contentPane.add(panel2,BorderLayout.WEST); 58 59 frame.setVisible(true); 60 61 class OkButtonActionListener implements ActionListener{ 62 String message = textField1.getText(); 63 char offset = (char) comboBox1.getSelectedItem(); 64 //これがエラーになってしまう 65 button1.addActionListener(new OkButtonActionListener()); 66 67 68 @Override 69 public void actionPerformed(ActionEvent e) { 70 textField2.setText(Caesar.caesarCode(message,offset)); 71 } 72 } 73 } 74}
回答1件
あなたの回答
tips
プレビュー