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