6

JComponents(たとえば、JLabelsとJTextboxes)を含む複数のJPanelを含むJPanelがあります。

各内部JPanelの内部では、すべてのラベルの適切な配置を確保するためにJGoodiesレイアウトを使用しています。

ただし、もちろん、すべてのラベルを、それらがどのサブパネルにあるかを個別に配置する必要があります。

JLabelを含む列の幅を固定せずに、どうすればそれを行うことができますか?

コンポーネントのグループの周りに境界線が必要なため、JPanelsを失うことはできません。

4

5 に答える 5

7

ネストされたレイアウトよりもフラットなレイアウトを優先することをお勧めします。単一のレイアウトでの位置合わせは簡単です。TitledBordersを避け、タイトル付きの区切り文字、区切り文字、または空白だけに置き換えてください。これは、大多数の編集者とフォームに役立ちます。

ただし、複数のエディターまたはフォーム間で調整する場合は、上記の手法は失敗します。JGoodies FormLayoutは、この問題に対処するため、より一般的にはレイアウトの一貫性を向上させるために、1)サイズの下限、2)レイアウト変数の2つのレベルを提供します。

1)を使用すると、フォーム全体の幅が最小になるようにレイアウトを記述できます。たとえば、すべてのラベル列の幅が少なくとも100ピクセルであると言いたい場合は、ラベル列に「[100px、pref]」と言うことができます。

2)アプローチ1)を超えています。そして動機はあなたの多くのフォームから100pxを抽出することです。FormLayoutでは、レイアウト変数を設定できます。たとえば、「[100px、pref]」または「right:[75dlu、pref]」として構成する$ labelなどです。すべてのエディターでレイアウト変数を使用する場合、これらは次のようになります。一貫性があり、すべてのエディターのすべてのラベル列を構成できる単一の場所があります。

于 2012-06-01T08:41:20.860 に答える
4

私が知っていることを行う簡単な方法はありません。オプション:

  • その機能を備えた独自のレイアウト マネージャーを作成する (または既存のレイアウト マネージャーを拡張する)
  • 固定列幅
  • 境界線で視覚的に区切られたパネルは、結局、コンテンツを揃える必要がないことを決定します
于 2010-09-21T14:32:11.283 に答える
2

に境界線があるからといっJPanelて、実際に見かけの内容を含める必要があるわけではありません。パネルを透明に設定します。パネルとコンポーネントを囲んでいるパネルに追加します。スペーサー コンポーネントを追加して、レイアウト内のパネルのインセットを模倣します。また、コンポーネントが重なっている場合は、「最適化された描画」などをオフにする必要があります。

于 2010-09-21T14:37:31.087 に答える
1

ウィジェットの配置が優先される場合は、境界線を持つ複数の JPanel ではなく JSeparator を使用することに関する提案を読みました。

JSeparator は、ウィジェットをグループ化するという視覚効果をもたらしますが、それ自体は、同じ JPanel に適合する別の単純なウィジェットです。推奨サイズの設定などの重要なヒントについては、チュートリアルをお読みください。 http://download.oracle.com/javase/tutorial/uiswing/components/separator.html

また、Apple の現在のガイドラインでは、境界線や区切り記号の代わりに、グループ間の区切りとして空のスペースを使用することを提案しています。

于 2011-06-26T00:34:58.523 に答える
0

このサンプルコードは、配置の問題を修正するのに役立ちます。

//c is instance of the content pane
c.setLayout(gl=new GridLayout(3,0));
//jp is a jpanel. I took this panel because there is no alignment
//setting for a specifiq cell of grid Layout.
jp.setAlignmentX(CENTER_ALIGNMENT);
//jl is the jLabel
jp.add(jl);
//finally I add that with the frame
c.add(jp);

それがあなたの問題を解決するのに役立つことを願っています。

于 2012-08-08T05:09:58.777 に答える