私はゲームプロジェクトに取り組んでいます。私はGUIクラスを作成し、ゲームの各プレイヤーのインスタンスを作成したいと思います。だから、各プレイヤーはゲームの1つの画面を持っています。複数のJFrameインスタンス上の同じコンポーネント
一部の情報は特定のプレーヤー画面に表示され、一部は一般的なものになります。共通の情報を表示するために、私はアイコンを配置する静的なJLabelを作成しました。しかし、私は問題がある、アイコンは、画面のいずれかにのみ表示されます。
どうしてですか?
私はゲームプロジェクトに取り組んでいます。私はGUIクラスを作成し、ゲームの各プレイヤーのインスタンスを作成したいと思います。だから、各プレイヤーはゲームの1つの画面を持っています。複数のJFrameインスタンス上の同じコンポーネント
一部の情報は特定のプレーヤー画面に表示され、一部は一般的なものになります。共通の情報を表示するために、私はアイコンを配置する静的なJLabelを作成しました。しかし、私は問題がある、アイコンは、画面のいずれかにのみ表示されます。
どうしてですか?
短い回答:できません。 Swingライブラリの基本的なルールは、コンポーネントが1つの唯一のコンテナ、通常はコンポーネントが追加された最後のコンテナに表示されることです。
長い答え:あなたはしたくないです。あなたは、プログラムのモデル、その論理的な基盤が、GUIの見方から十分に離れているように、プログラムを構造化したいと思っています。だからあなたがしたいのは、各GUI要素が同じモデルを共有し、この情報を使用して独自の一意のビューを作成することです。これは利点もあります。なぜなら、プレイヤーが異なる視点または視点で要素を表示したい場合、他のプレイヤーが見ているものに影響を与えることなくこれを行うことができるからです。
サイドノート:それはSwingコンポーネントではないので、単一のイメージアイコンが共有し、あなたのGUIの複数の別々の場所で見ることができることに注意しますが、JLabelのは、複数の場所に表示することはできません。
サイド注2:これはあなたのプログラム構造に関連する情報が含まれているとして、The Use of Multiple JFrames: Good or Bad Practice?:必ずお読みください。
サイドノート3、:
を共通の情報を表示するには、私はすべての可能性であれば、私は、静的フィールドを使用して避けるだろう...
を静的のJLabelを作成しました。これは小さな単純なおもちゃプログラムでは問題ありませんが、使用する静的なフィールドが多いほど、コードの結合を増やし、循環的な複雑さを増やすリスクが高くなります。バグを治すのが難しいリスク。あなたの情報を隠し、クラスの結束度を高め、コードの結合を減らすことで、良いOOPの慣行に従ってください。あなたは、クリーンで簡単にデバッグしてプログラムを改善する幸せなコーダーになります。
.........................こんにちは? –