0

Swing で GUI を作成する際の技術的な側面についてお聞きしたいと思います。コンテンツが多数 (設定、アクション、データの表示、グラフなど) に整理されたJFrameor (気にしないでください)があると仮定しましょう- すべてが 1 つのフレーム内にあります。JDialogJPanels

例:ここ

私が今行っていることは、すべてのコンポーネントを 1 つのファイル (名前を付けてくださいMainPanel.java) で定義し、JPanels. A には、各パネルを整理するための個別の方法があります

private void organizePanels() {
  pnlSettings = createPnlSettings();
  pnlActions = createPnlActions();
  pnlChart = createPnlChart();
  // ...
}

各メソッドはJPanel、 のレイアウトの設定、その中のコンポーネントの編成などを担当します。複雑ではないパネルが 3 ~ 4 個ある場合、それは理にかなっています (つまり、非常に読みやすいということです)。しかし、より複雑な構造を作成すると、小さなメンテナンスの悪夢になり始めます (または、そのようなものになるための良い出発点です)。

そのため、私はそのようなアプローチを使用したいと考えています: - それぞれJPanelに別のクラスを作成します - 各クラスには内部コンポーネントへのアクセサが必要です ( A の aJButtonをクリックするとJPanel、 other の JCombo が更新されJPanelます)。- パネル間の通信は、何らかの方法で MainPanel によって提供される必要があります。

そのため、mainPanel では、JPanels への参照のみを持ち、その中のコンポーネントへの参照は持ちません。特定のデータへのアクセスは少し長くなります (pnlActions.getSaveButton.setEnabled(true)代わりにbtnSave.setEnabled(true) 、おそらく自然な結果です。JPanels のすべてのコンポーネントを公開することもできます。

このアプローチは正しいと思いますか? 常に 2 番目のアプローチを使用する必要があると思いますか、それともあまり複雑でない構造には最初のアプローチが適しているのでしょうか?

どんな経験がありますか?

4

2 に答える 2

0

あなたは正しい道を進んでいると思います。パネル ハンドラー クラス (静的かどうかに関係なく) を導入することで、さらに先に進むことができます。このようにして、GUI コンポーネント (JFrame 自体を含む) を内部管理から明確に分離します。何らかの方法で、パネル ハンドラーのパブリック メソッドを介してパネルを登録します。あるパネルで別のパネルに影響を与える何かが発生している場合、すでに計画したとおりに、パネルがハンドラーに連絡できるようにします。すべてのパネルには、ハンドラーがパネルを操作する方法を決定するそれぞれのインターフェースがあります。この概念設計は、より大規模なアプリケーションに非常に適しています。これは、ハンドラーが、パネル クラスの山のどこかに機能を「隠す」のではなく、トリガーされる可能性のあるすべての相互作用を合計するためです。

すべてのパネルが共有するメソッドまたは変数を無効にすることで、この概念設計を改善することもできます。これにより、コードの変更にかかる時間と労力が削減されます。より多くの並行プログラミングを使用したい場合は、ハンドラー クラスを使用して、実行する必要があるすべてのクエリを作成できます。パネルにジョブをクエリに追加させるだけで、ハンドラーがジョブを実行し、後でクエリから削除します。

于 2013-10-13T11:50:22.277 に答える