java - JOptionPane 动作监听器在退出时发布
问题描述
我创建了一个应用于框架的名为 addSupplier 的按钮,然后我创建了一个动作侦听器,因此一旦按下 addSupplier 按钮,它将创建一个 JOptionPane,该面板带有一个附加了 JTextFields 的面板。
addSupplier.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae) {
JOptionPane.showMessageDialog(null,addSupplierPanel,"Add new supplier", JOptionPane.PLAIN_MESSAGE);
suppNameInsert = suppNameIn.getText();
System.out.println(suppNameInsert);
}
});
此 JOptionPane 的目的是向 JTextFields 添加信息,然后对其进行处理并发送到 MySQL 数据库,但是,因为如果我按下 Okay 或“X”out 按钮,JOptionPane 将在动作侦听器中打开,它将打印任何内容在 JTextField 中。
我只希望在我按下“OKAY”时发生这种情况,但我认为我必须以单独的方式生成 JOptionPane?
解决方案
更改 showXXX(...) 会更改窗格的输入和内容,但不会阻止退出按钮被视为按下按钮?
您需要检查从该showXXX(….)
方法返回的 int 参数。该值将告诉您单击了哪个按钮。
就像是:
int result = JOptionPane.showConfirmDialog(…);
if(result == JOptionPane.YES_OPTION)
{
// do your processing here
}
推荐阅读
- git - 使用特定的 subrepo 分支创建顶级 repo 分支
- react-native - 在 iOS 中打开模式时,“react-native-loading-spinner-overlay”不起作用
- python - 文件名、目录名或卷标语法不正确。面料.api.local
- python - 我怎样才能得到文件python中第一行之后的所有行?
- python - 如何用sql server中的NULL替换Dataframe中的nan?
- c# - 在 MassTransit 中,如果我为预定消息设置 TTL,是否包括初始延迟?
- c# - 如何增加进度条?
- html - 使用 vh/vw CSS 单元时需要视口元标记?
- linux - 将数组中的键从 bash 传递到 jq - 输出所有空值
- visual-studio-code - 如何在 VS Code 中禁用输出日志?