首页 > 解决方案 > 如何在我的 showMessageDialog 中显示两个文本字段 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()));
    }
  }
}

标签: javaswingactionlistener

解决方案


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

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


推荐阅读