0

と非常によく似た方法で別の JPanel をインスタンス化する JPanel がありますJOptionPane.showMessageDialog(...)。ただし、サイズ、メッセージ、ボタンの位置などを変更したいので、このオプションは使用しません。ただし、最終的なユーティリティは同じである必要があり、選択されたオプションが選択されるとすぐに返されます。actionPerformed(...)問題は、メソッドから変更されるまで null に初期化される可能性のある属性をポーリングする必要がないことです。代わりに、どういうわけか a を使用するCompletionServiceことを考えていましたが、それを正確に行う方法を考えることができません。どのように定義すればよいでしょうか?Futureメソッドで選択する必要があると思いますが、getSelectedOption()メソッドで生成する必要があります actionPerformed(...)。これを行う方法?

4

2 に答える 2

1

最も簡単なオプションは、モーダルである JDialog にパネルを埋め込むことですsetModal(true)

このようにして、パネルなどを初期化する静的メソッドを作成し、呼び出しますsetVisible(true)(ダイアログがモーダルであるためブロックします)。次に、ユーザーが [OK] ボタン (ダイアログを閉じる) をクリックすると、選択したオプションを取得できます。

public static MyOption showMyDialog() {
    final JDialog myDialog = new JDialog();
    myDialog.add(myPanel);
    myDialog.setModal(true);
    myDialog.setVisible(true); // blocker since the dialog is modal

    return myPanel.getSelectedOption();
}
于 2012-10-15T09:26:46.303 に答える
0

JOptionPane のサブクラスを作成して、必要なレイアウトを実行し、引き続き return メソッドを使用することができます。

于 2012-10-15T09:23:32.480 に答える