別のパネルにJPanel
テキストボックス、保存ボタンがあります。保存ボタンをクリックすると、最初のパネルのテキスト ボックスの値を取得する必要があります。
アクセス方法は?
TextField を Public Static として作成するだけです。そして、ClassName.TextFiledName を使用して TextField にアクセスできます
簡単な解決策は、ActionListenerを実装するクラスにコンストラクターを作成し、更新または値を取得するために必要なコンポーネントをコンストラクターに渡すことです。
このソリューションは機能しますが、コードをより再利用可能にするためのより良いアプローチがあります。オブザーバーパターンを見て、コードで使用します。
SSCCEがないので、これが一般的な答えになります。
まず、テキストボックスをパブリック静的フィールドにして他のクラスからアクセスすることもできますが、これはこれまでに作成した中で最悪のコードの1つになります。次に、プログラムが複雑になるにつれて、クールであるがうまく動作しないセッター/ゲッターメソッドを使用できます。セッター/ゲッターは、コンポーネント間に緊密な結合を作成します。最後に、オブザーバーパターンを使用することをお勧めします。自転車に対して核兵器を使用しているように見えるかもしれませんが、最終的には最初のトラブルの価値が十分にあります-そしてあなたはその過程で何かを学びます。
詳細とソースコードの例は、Sourcemakingにあります。
Controller
パネルを作成するクラスが必要です。コントローラー クラスでパネルへの参照を保持します。CustomPanel1
(テキストフィールド自体ではなく) TextField 内のテキストを返すようにgetter メソッドを公開します。同様に、2 番目CustomPanel2
も から作成し、Controller
参照を保持します。コントローラーでリスナー クラスを定義し、それを 2 番目のパネルに渡します。2 番目のパネルで、リスナーをボタンに追加します。
これは簡単な解決策です。