首页 > 解决方案 > 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?

标签: javaswingjoptionpane

解决方案


更改 showXXX(...) 会更改窗格的输入和内容,但不会阻止退出按钮被视为按下按钮?

您需要检查从该showXXX(….)方法返回的 int 参数。该值将告诉您单击了哪个按钮。

就像是:

int result = JOptionPane.showConfirmDialog(…);

if(result == JOptionPane.YES_OPTION)
{
    // do your processing here
}

推荐阅读