質問

多くのコントロールを備えたかなり大きなフォームを構築する必要があります。コントロールは次のように分かれています。 基本的な コントロール/設定と 延長された コントロール/設定。ユーザーは、基本コントロールのみを表示するか、基本コントロールと拡張コントロールの両方を表示するかを決定できます。

すべての拡張コントロールを独自の JPanel にドロップしたので、このパネルを表示または非表示にすることで 2 つのビューを簡単に切り替えることができます。

現在、GroupLayout を使用していますが、異なるパネル上のコントロールが整列していないことが起こります。

Label aaa:     Text field
Label a:       Text field
Label aaaaaa:  Text field
----------------------------
Label b:    Text field
Label bbb:  Text field
Label bb:   Text field

残念ながら、2 つのパネルのレイアウトを「同期」する方法を見つけました (AbsoluteLayout と固定制御座標の使用を除く)。

  • これを達成する方法はありますか?
  • 私の設計全体に欠陥があるのでしょうか?

編集: 可能であれば、GroupLayout マネージャーを維持したいと思います。

役に立ちましたか?

解決

私の知る限りでは、(JREまたはオープンソースから)何のスイングLayoutManagerが、いくつかのパネルをまたがることはできません。

私は現在、私の DesignGridLayout プロジェクトが、それは道具への容易なものではありません(私は約2週間前に開始していると私は何か面白いものに取得するときならば、私はまだ正確に表示されていないが、私はまだそれのために高い期待を持っている;-))

あなたがチェックできる1つのオプションは(そしてちょうど1 GroupLayoutで)同じパネルに、すべてのコンポーネントを追加することであろうと、ユーザの選択に基づいて、それらを表示/非表示にします。うまくいけば、GroupLayoutは(()パックを呼び出した後)状況にサイズを適応させます。

GroupLayoutはうまく動作します場合は、

、それはちょうど(パックを呼ぶの問題だろう)、ユーザ後の各時間は、拡張フィールドを表示/非表示するために彼の選択を変更。

他の手動でユーザーが自分の選択を変更するたびに、あなたのパネルのサイズを設定する必要があります。

他のヒント

おそらくそれを行うための最も簡単な(良い)方法は、メインパネルにすべてのコンポーネントを追加することです。非不透明にサブパネルを設定し、メインパネルにも追加します。メインパネルはニーズがオフされるように、描画に最適化ます。

別の技術は、スペーサー成分を添加することです。ボトムパネルに動的にトップラベルからその様々なサイズメソッドの幅成分を取るラベルと同じ列にコンポーネントを追加します。トップパネルには逆に同じ操作を行います。

私は、標準的なレイアウトマネージャでそれを行うための方法はありませんだと思います。あなたはおそらく、独自のレイアウトマネージャを記述する必要がありますが、あなたはGroupLayoutをサブクラス化している場合、それはあまりにも難しいことではありません。

は、

列の間にあなたの均一な間隔を与える代わりに、GroupLayoutのGridLayoutのを使用することができます

あなたが別のレイアウトで、別のパネルでそれらを保持する場合:

あなたが追加したラベルのすべてを反復処理し、それぞれの最大推奨幅を見つけます。 もう一度繰り返し、そして、各ラベルの好適な高さに推奨サイズを設定するが、最大幅

これは番目ののGridLayoutするの説明があります。これは、あなたがそれを期待し、サイズにすべてのコンポーネントを設定します。 GridDataオブジェクトを使用すると、コンポーネントがordere方法を指定することができます。


<サブ>(ソース: sun.com

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top