異なるレイアウトのパネルがたくさんある1つのJavaデスクトップアプリケーションを開発しています。新しいレイアウトをパネルに設定するときは、常に新しいレイアウトを作成します。例えば。デスクトップアプリケーションのレイアウト
JPanel panel = new JPanel(new GridLayout(0, 1));
は、いくつかのLayoutFactory
を作成し、ここに私が必要と、その後のパネルに設定されているすべてのレイアウトを作成するための正しい解決策ですか?
異なるレイアウトのパネルがたくさんある1つのJavaデスクトップアプリケーションを開発しています。新しいレイアウトをパネルに設定するときは、常に新しいレイアウトを作成します。例えば。デスクトップアプリケーションのレイアウト
JPanel panel = new JPanel(new GridLayout(0, 1));
は、いくつかのLayoutFactory
を作成し、ここに私が必要と、その後のパネルに設定されているすべてのレイアウトを作成するための正しい解決策ですか?
1)新しいGridLayout(0, 1)
でのJPanelを敷設する最も簡単な方法は、コンテナの各Nested Layout
によってJComponents
を築くある)、この場合、あなたは全体のJPanel
2のために一つだけJComponent
を置き、BoxLayout
を使用してBorderLayout.CENTER
またはできるだけ同じにする必要があります全体contaiのために時間ごとJComponents
を置いて)ほとんどの場合(可能であるGridBagLayoutまたはMigLayoutを使用することによって異なるLayoutManager、同じLayoutManager
またはその組み合わせ
3)を持つことができますまたはJPanel
#1 'GridLayout(0,1)'は 'BorderLayout.CENTER'とは異なります。これは、1つの列を持つレイアウトを定義し、要素と同じ数の行が追加されます。 'GridLayout(1,1)'でさえ、要素が追加されたときに1つのセルしか持たず、列を動的に追加します。 'BoxLayout'は異なる効果を持ち、コンポーネントのサイズを変更しません。 #3 JGoodies FormLayoutはこの目的のための良い選択肢です。 –
hudiコードをより簡潔にしたい場合は、レイアウトを作成して割り当てるヘルパーメソッドを書くことができます。 1つのクラスのみでレイアウトを設定する場合、ヘルパーメソッドはそのクラスのメソッドにすることができます。または、さまざまなクラスのレイアウトを設定する場合は、共通のスーパークラス(ある場合)にprotected
ヘルパーメソッドを追加するか、ユーティリティクラスにstatic
メソッドを追加することができます。
コードの詳細を投稿すると、より具体的な提案ができます。
http://docs.oracle.com/javase/tutorial/uiswing/index.html –
工場は不要です(一部は共有することもできません) – kleopatra
と共有できるレイアウトは何ですか? E.GプロジェクトでflowLayoutを検索すると、このレイアウトのインスタンスを約30個作成していることが分かりました。 – hudi