私の最初の問題は次のとおりです。「同じアクションが、別の Swingオブジェクトで参照される別の UI コンポーネントと組み合わせて使用される場合、Swing の量をActions(他のアクションのベースとして使用して) どのように制限するのですか?相互に直接参照"?AbstractActionJPanel
私の 2 番目の問題は、「アクションの actionPerformerd() メソッドが 2 つ以上の異なる UI コンポーネント参照を使用する場合に、アクションと UI コンポーネントの間で参照を維持する方法」です。直接関係のないさまざまな場所で actionPerformed() メソッド内に ui コンテキストが必要です (まあ、少なくともそれは私が思うことです)。
私が扱っている私の設計上の懸念を説明させてください...
すべての UI ロジックを保持する JFrame が 1 つあります。この JFrame は、JPanel ロジックへの 3 つの異なる参照を保持します: a ControlPanel、 a 、MainPanelおよび a StatusPanel(すべて JPanel を拡張します)。
ControlPanelJMenu と項目、JToolBar 項目、およびこの JPanel をセットアップし、すべての適切なアクションがインストールされた状態で contentpane に追加されます。
はMainPanel、ユーザーとの実際のコミュニケーションが行われる場所です。この JPanel は、内部に多数の JPanel を含む CardLayout を保持します。
これStatusPanelは実際には、さまざまな JPanel からのあらゆる種類のテキスト メッセージを処理するステータスバーですが、StatusBarManager オブジェクトによって処理されます。ここには空想的なものはありません。退屈な GUI のものだけです。
ここで問題の部分: 最初に、考えられるアクションごとに一連の拡張AbstractActionsをプログラムしました (あまり良いアイデアではありません)。次に、特定のタスクに obj を ActionFactory渡すan をプログラムしました。次のようにします。メソッドの実装という 1 つの違いだけで、すべての「ファイル」操作
のオブジェクトをインスタンス化できるため、これはより良いアプローチのように思えます。別のものを呼び出すと、以前にインスタンス化された同じオブジェクトが返されるため、これは良い考えのようです (多くの重複オブジェクトを保存します)。これは良い考えに思えるかもしれませんが、私はまだ のコンテキストに苦労しています。とを使用して表示する「カード」を選択すると、ActionActionFactory.getAction("file.new");FileActionactionPerformed()JPanelActionFactory.getAction("file.new");ActionJPanelsMainPanelJMenuJMenuItems、私はControlPanelUIコンテキストのみにいて、メソッドにはそのJPanelのを使用して「カード」を設定するコンテキストactionPerformed()がありません。同じことが MainPanel にいて (ボタンを押して)、StatusPanel のコンテキストがない場合にも当てはまります。MainPanelCardLayout
これらの以前の提案をstackoveflowで見ましたが、どういうわけか接続できません。私は手がかりを失っています...
SO でのアクションに関する同じ Q&A の並べ替え: here、here、here、here、here、here、here、here、およびhere。
これには、appframework、eclipse rcp、spring rcp などのフレームワークを使用することを提案する人もいます。しかし、デフォルトの JVM 6 で利用できるもの以外のいくつかの理由から、私はフレームワークをまったく使用しないことを好みます。
誰かがこの問題に光を当てて、私の問題の良い解決策を見つけるのに役立つことを願っています. 事前にご協力いただきありがとうございます。