我有两个带有ActionListeners的textField,因此我注意到用户在编辑textField1和2之后按下回车键时,便可以同时显示带有textField 1和2的消息对话框。
但是我不知道如何显示两个字段,它只在这里两次显示textField2?可能是什么原因造成的?
public JTextField textField1;
public JTextField textField2;
public TextFieldFrame(){
textField1 = new JTextField("textField 1",30);
textField1.setEditable(true);
textField1.setBounds(100, 340, 300, 25);
add(textField1);
textField2 = new JTextField("textField 2",30);
textField2.setEditable(true);
textField2.setBounds(100, 370, 300, 25);
add(textField2);
TextFieldHandler handler = new TextFieldHandler();
textField1.addActionListener(handler);
textField2.addActionListener(handler);
setSize(450, 600);
setLocationRelativeTo(null);
setVisible(true);
}
private class TextFieldHandler implements ActionListener{
@Override
public void actionPerformed(ActionEvent event){
JOptionPane.showMessageDialog(TextFieldFrame.this, String.format("testing%n1.%s%n2.%s", event.getActionCommand(), event.getActionCommand()));
}
}
}
答案 0 :(得分:0)
JOptionPane.showMessageDialog(TextFieldFrame.this,
String.format("testing%n1.%s%n2.%s", event.getActionCommand(), event.getActionCommand()));
您的文本字段共享相同的侦听器,因此您不能两次使用event.getActionCommand()方法。您将获得相同的值。
我认为您想要类似的东西
JOptionPane.showMessageDialog(TextFieldFrame.this,
String.format("testing%n1.%s%n2.%s", textField1.getText(), textField2.getText()));
也不要使用setBounds()
textField2.setBounds(100, 370, 300, 25);
布局管理器将根据布局管理器的规则确定组件的大小/位置。