2

私はswingを使って魔法使いを作りたいです。JOptionPane はウィザードのように機能することに気付きました。制限されているのは、入力の量とその編成方法だけです。

必要な入力が与えられ、最後に値を返す前に右ボタンが押されるまで JOptionPane がどのように「待機」するかを知っている人はいますか?

ウィザードの典型的な cardLayout を作成できるように JOptionPane を使用する方法を知っている人はいますか?

4

3 に答える 3

5

ここJOptionPaneに示すように、任意のコンテンツを に追加できます。そのコンテンツは、ここに示すように、を持つパネルにすることができます。を指定すると、いずれかのボタンがクリックされるまで待機します。結果が の場合、必要に応じてカードの内容を調べることができます。CardLayoutJOptionPane.OK_CANCEL_OPTIONJOptionPaneJOptionPane.OK_OPTION

于 2012-04-30T01:23:50.960 に答える
4

ウィザードの画面を切り替えるにはモーダルJDialogが必要だと思います。CardLayoutが非表示の場合、JDialogそこから状態を取得して、続行する方法を決定できます。

于 2012-04-30T07:34:25.847 に答える
1

「待つ」とはどういう意味ですか?ボタンが押されるまで実行をブロックするという意味で「待機」を意味しますか? その場合、多くの解決策がありますが、最も簡単なものの 1 つは次のようなものです。

while(block) {
    Thread.sleep(500);
}

そしてblock = false;、OKボタンが押されると、ダイアログが設定されます。そのためのより洗練されたソリューションがありますが、これは単なる例です。

すべてのフィールドに入力する必要があるという意味で「待機」を意味する場合、すべてのフィールドにリスナーを実装して、最後のフィールドが編集された場合に OK ボタンを有効にすることが簡単にできます。

JDialogたとえば、こちらのソースコードを見ることができます。ブロッキング部分はここshow()のスーパークラスのメソッドでやってると思います。Dialog

ヒント: 複数ページのウィザードを独自にゼロから作成しようとしたり、何かをブロックしようとしたりしないでください。通常、これにより、より多くの問題が発生します。代わりに、こちらのようなチュートリアルに従ってください。ダイアログをウィザードの基礎として使用する方法について説明します。

于 2012-04-29T22:27:47.810 に答える