1

私は、通過するたびにオブジェクトのリストをトラバースするプログラムに取り組んでいます。オブジェクトの「時間」(つまり、パスの数) が経過すると、JDialog を起動して次のタスクを要求します。問題は、単一のパスでこのリクエストを行う複数のオブジェクトを処理する方法です。

JDialog をモーダルにすると、各オブジェクトが順番に要求を行います。これが私の望みです。しかし、メイン プログラム ウィンドウは使用できません。これは望ましくありません。

JDialog がモーダルでない場合、パスごとに 1 つずつ複数のインスタンスが表示されますが、これは望ましくありません。または、シングルトンとして設定した場合、インスタンスは 1 つだけ表示されますが、リスト内の最後のオブジェクトのみがリクエストを作成して使用できます。

ダイアログをポップアップし、他のウィンドウをユーザーが使用できるようにし、他のオブジェクトがダイアログを使用する順番を待つ方法はありますか?

4

2 に答える 2

2

コメントに記載されているように、この問題は親のモダリティを変更することで解決できますWindow。欠点として、「動作は実装に依存します」。

別の方法として、 のバックグラウンド スレッドでオブジェクトをトラバースし、 、 、などのSwingWorker適切なコンポーネントに新しい候補を追加することを検討してください。コンポーネントから要素を選択すると、従来のモーダル ダイアログが表示され、完了時に要素が削除されます。関連する例を次に示します。提案された各コンポーネントには、そのステータスを表すアイコンでラベルを付けることができます。JListJTableJTabbedPane

于 2012-08-16T09:32:33.743 に答える
0

元のウィンドウの ModalExclusionType を「アプリケーション」に設定し、終了したら「除外なし」に切り替えることでこれを解決しました。

于 2012-09-26T14:58:55.903 に答える