0

OK ボタンと CANCEL ボタンを持つ JOptionPane で表示される 2 つの入力テキスト フィールドを持つ非モーダル ダイアログがあります。以下のようにダイアログを表示します。

        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);

ダイアログから戻り値を取得するにはどうすればよいですか? OkまたはCANCELボタンが押されたかどうかを取得する必要があることを意味します。どうすればこれを達成できますか?

4

2 に答える 2

1

1 つの方法は、 に を追加し、その可視性が変化ComponentListenerするの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 に答える