如何捕获从JOptionPane按下的确定按钮

时间:2015-12-05 17:37:56

标签: java swing joptionpane

我想在JOptionPane上按下“OK”按钮时捕获ok按钮事件。然后我想显示一个jframe。我发现了许多关于捕获除JOptionPane之外的各种事件的教程和视频。 Java文档对新手没什么帮助。希望有人可以提供帮助。我有以下内容。

JOptionPane.showMessageDialog(frame,
            "Press OK to get a frame");

如何实现侦听器以捕获OK按下的事件。

private class Listener implements ActionListener {

    public void
      actionPerformed(ActionEvent e) {

    }

}

2 个答案:

答案 0 :(得分:3)

无需捕获它 - 代码流将立即返回JOptionPane显示行。如果你想知道OK vs cancel vs delete是否按下了窗口,那么使用不同的JOptionPane - 使用JOptionPane.showConfirmDialog(...),并捕获从此方法调用返回的结果。

    String text = "Press OK to get a frame";
    String title = "Show Frame";
    int optionType = JOptionPane.OK_CANCEL_OPTION;
    int result = JOptionPane.showConfirmDialog(null, text, title, optionType);
    if (result == JOptionPane.OK_OPTION) {
        //...
    }

答案 1 :(得分:3)

您无法使用showMessageDialog方法执行此操作。您必须使用showConfirmDialog方法。这将返回一个值,您可以在该值上确定按下的按钮:

int result = JOptionPane.showConfirmDialog(frame, "Press OK to get a frame");

if (result  == JOptionPane.YES_OPTION) {
     // Yes button was pressed
} else if (result  == JOptionPane.NO_OPTION) {
     // No button was pressed
}

要获得确定按钮,您需要使用OK_CANCEL_OPTION

int result = JOptionPane.showConfirmDialog(frame, "Press OK to get a frame",
                                     "Title", JOptionPane.OK_CANCEL_OPTION);

if (result  == JOptionPane.OK_OPTION) {
     // OK button was pressd
} else if (result  == JOptionPane.CANCEL_OPTION) {
     // Cancel button was pressed
}