私はswingを使って魔法使いを作りたいです。JOptionPane はウィザードのように機能することに気付きました。制限されているのは、入力の量とその編成方法だけです。
必要な入力が与えられ、最後に値を返す前に右ボタンが押されるまで JOptionPane がどのように「待機」するかを知っている人はいますか?
ウィザードの典型的な cardLayout を作成できるように JOptionPane を使用する方法を知っている人はいますか?
ここJOptionPane
に示すように、任意のコンテンツを に追加できます。そのコンテンツは、ここに示すように、を持つパネルにすることができます。を指定すると、いずれかのボタンがクリックされるまで待機します。結果が の場合、必要に応じてカードの内容を調べることができます。CardLayout
JOptionPane.OK_CANCEL_OPTION
JOptionPane
JOptionPane.OK_OPTION
ウィザードの画面を切り替えるにはモーダルJDialog
が必要だと思います。CardLayout
が非表示の場合、JDialog
そこから状態を取得して、続行する方法を決定できます。
「待つ」とはどういう意味ですか?ボタンが押されるまで実行をブロックするという意味で「待機」を意味しますか? その場合、多くの解決策がありますが、最も簡単なものの 1 つは次のようなものです。
while(block) {
Thread.sleep(500);
}
そしてblock = false;
、OKボタンが押されると、ダイアログが設定されます。そのためのより洗練されたソリューションがありますが、これは単なる例です。
すべてのフィールドに入力する必要があるという意味で「待機」を意味する場合、すべてのフィールドにリスナーを実装して、最後のフィールドが編集された場合に OK ボタンを有効にすることが簡単にできます。
JDialog
たとえば、こちらのソースコードを見ることができます。ブロッキング部分はここshow()
のスーパークラスのメソッドでやってると思います。Dialog
ヒント: 複数ページのウィザードを独自にゼロから作成しようとしたり、何かをブロックしようとしたりしないでください。通常、これにより、より多くの問題が発生します。代わりに、こちらのようなチュートリアルに従ってください。ダイアログをウィザードの基礎として使用する方法について説明します。