私はSwingとJFrameを学ぼうとしているので、あなたの名前を尋ね、入力した内容を示すボックスを表示する非常に単純なプログラムを作成しています。ActionListenerとして機能し、入力された名前を表示するために、最初のクラスとは別のクラスを使用しようとしています。しかし、それは私には機能しません。2番目のクラスで、インスタンス変数をJTextfieldで取得した値に設定するコンストラクターを作成しようとしましたが、期待どおりに表示されません。ご覧ください。
これが私のコードです(すべてのライブラリを適切にインポートしましたが、スペースのために省略しています)
これがメインクラスです...
public class NamePrompt extends JFrame{
private static final long serialVersionUID = 1L;
String name;
public NamePrompt(){
setLayout(new BorderLayout());
JLabel enterYourName = new JLabel("Enter Your Name Here:");
JTextField textBoxToEnterName = new JTextField(21);
JPanel panelTop = new JPanel();
panelTop.add(enterYourName);
panelTop.add(textBoxToEnterName);
JButton submit = new JButton("Submit");
submit.addActionListener(new SubmitButton(textBoxToEnterName.getText()));
JPanel panelBottom = new JPanel();
panelBottom.add(submit);
//Add panelTop to JFrame
add(panelTop, BorderLayout.NORTH);
add(panelBottom, BorderLayout.SOUTH);
//JFrame set-up
setTitle("Name Prompt Program");
//setSize(300, 150);
pack();
setLocationRelativeTo(null);
}
public static void main(String[] args) {
NamePrompt promptForName = new NamePrompt();
promptForName.setVisible(true);
}
}
そしてこれはActionListenerクラスです:
public class SubmitButton implements ActionListener {
String nameInput;
public SubmitButton(String textfield){
nameInput = textfield;
}
@Override
public void actionPerformed(ActionEvent submitClicked) {
Component frame = new JFrame();
JOptionPane.showMessageDialog(frame , "You've Submitted the name " + nameInput );
}
}