如何让JOptionPane中的按钮执行某些操作而不关闭它?

时间:2015-11-02 17:55:40

标签: java swing dialog

我的项目中有3个按钮,我希望他们执行一些代码。我知道这些方法返回整数(每个按钮都不同),我可以使用"如果"指示检查按下了哪个按钮并执行特定操作。它工作,但首先它关闭对话框,这不是我想要的。我只想通过第三个按钮或[x]关闭它。

public void popup(){
    JButton[] buttons = {new JButton("Save"),new JButton("Re-draw"),new JButton("Close")};
    if(results.size()==0){
        JOptionPane.showMessageDialog(frame, "Please fill all fields", "Error", JOptionPane.PLAIN_MESSAGE);
    }
    else{
    JList<String> resultsList = new JList(results.toArray(new String[results.size()]));
    int result = JOptionPane.showOptionDialog(frame, resultsList, "Results",JOptionPane.DEFAULT_OPTION, JOptionPane.PLAIN_MESSAGE, null, buttons, buttons[0]);

        }
    });
    System.out.println(result);
        if (result == 0){
            /*saving results*/
        }
        else if(result == 1){
             draw();

        }

正如我所说,它有效,但按下任何按钮都会导致关闭对话框。我不知道它可能禁用自动对话关闭按钮&#34; Save&#34;和&#34; Redraw&#34;?

1 个答案:

答案 0 :(得分:1)

阅读Stopping Automatic Dialog Closing上的Swing教程中的部分。

另一种选择当然是如果只是创建自己的自定义JDialog来实现你想要的功能。