0

我有一个非模式对话框,其中包含两个输入文本字段,其中 JOptionPane 带有 OK 和 CANCEL 按钮。我显示如下对话框。

        JTextField field_1 = new JTextField("Field 1");
        JTextField field_2 = new JTextField("Field 2");

        Object[] inputField = new Object[] { "Input 1", field_1,
                "Input_2", field_2 };

        JOptionPane optionPane = new JOptionPane(inputField,
                JOptionPane.QUESTION_MESSAGE, JOptionPane.OK_CANCEL_OPTION);
        JDialog dialog = optionPane.createDialog(null, "Input Dialog");
        dialog.setModal(false);
        dialog.setVisible(true);

如何从对话框中获取返回值?意味着我需要知道是否按下了确定或取消按钮。怎样才能做到这一点?

4

2 回答 2

1

使用 getValue()将告诉您对话框是如何关闭的。由于它是非模态的,因此您需要在对话框关闭后获取该信息,可能使用Thread等待您的对话框关闭以返回信息的方法。您没有提供有关需要该信息的任何详细信息,因此使用另一个Thread可能不是您的最佳解决方案。

于 2014-01-21T16:56:39.833 回答
1

一种方法是ComponentListener在 the中添加一个dialog并监听它的可见性以进行更改,

dialog.addComponentListener(new ComponentListener() {
    @Override
    public void componentResized(ComponentEvent e) { }

    @Override
    public void componentMoved(ComponentEvent e) { }

    @Override
    public void componentShown(ComponentEvent e) { }

    @Override
    public void componentHidden(ComponentEvent e) {
        if ((int) optionPane.getValue()
                == JOptionPane.YES_OPTION) {
            // do YES stuff...
        } else if ((int) optionPane.getValue()
                == JOptionPane.CANCEL_OPTION) {
            // do CANCEL stuff...
        } else {
            throw new IllegalStateException(
                    "Unexpected Option");
        }
    }
});

注意:您可能应该ComponentAdapter改用;我正在展示整个界面以进行说明。

于 2014-01-21T16:57:50.550 回答