如何在showMessageDialog中显示两个文本字段actionListener?竖琴

时间:2018-10-30 15:40:43

标签: java swing actionlistener

我有两个带有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()));
    }
  }
}

1 个答案:

答案 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);

布局管理器将根据布局管理器的规则确定组件的大小/位置。