java - 如何在我的 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()));
}
}
}
解决方案
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);
布局管理器将根据布局管理器的规则确定组件的大小/位置。
推荐阅读
- python - SUMPRODUCT 两列 PYTHON
- .net - 使用代码中的 EF(Core) 迁移重置数据库/表
- routes - 如何在openshift中将证书更改为oc命令?
- go - go: bun: bun ORM 中不区分大小写的字段名
- asp.net-mvc - 如何在控制器方法中反序列化对象时设置 DateTime UTC?
- azure-logic-apps - Azure 逻辑应用程序中大小为 20+MB 的大块逗号分隔平面文件并转换为 Json - ActionResultsSizeLimitExceeded
- azure-devops - 了解作业请求返回的信息
- python - 是否可以从 jupyterlab 启动器中隐藏内核?
- github - 如何设置 GitHub 操作以评论新 PR?
- python-3.x - 我无法从生产中的 url 中删除端口 8000