Java swing を使用して Java ゲームのレベル エディタを作成しています。
機能の 1 つは、レベルをテストするためにゲームのオンとオフを切り替えるための切り替え可能なボタンがあることです。ゲームは jpanel 内で実行され、ボタンをもう一度クリックして切り替えを解除すると、ゲームがオフになります。
ゲームが実行されていないときにのみ、ユーザーがスイングアプリケーションの内容を変更したりボタンを押したりできるようにしたいのですが、実行中はゲームコンポーネントにフォーカスを設定します。Swing アプリケーションで押すことができる唯一のボタンは、ゲームをオフに戻すためのトグル ボタンです。
問題は、これを行う良い方法が思いつかないことです。再帰関数を使用すると、簡単にループしてすべてのコンポーネントを見つけて setEnabled(false) を実行できますが、ゲームがオフに戻ると、以前の有効な状態が何であったかを知る方法がありません (他のコンポーネントが応答するなどの問題もあります)。 setEnabled が他のコンポーネントで呼び出されている)
私が本当に必要だと思うのは、ゲームが実行されているときに、swing アプリケーションへのユーザー入力を完全に「殺す」ためのある種の方法です.. JPanel内で実行されているゲームは、フォーカスできる必要があります...
この種のことを、swing アプリケーションのコンポーネントを管理するための大量の「組織的な」コードなしで行う方法はありますか?