5

私はPropertyPanelを構築しています。現在、値を指定できる とそれに対応するフィールドGridLayoutを管理するためにを使用しています。JLabelsしかし、問題は、GridLayoutが列のサイズを自動的に管理することです。つまり、同じ幅になります。

これは、大きな値フィールドがある場合、列が大きくなっている (これは良いことです) が、他の列 (すべてのJLabels) も同様に大きくなっていることを意味します。スクリーンショットは次のとおりです。

ここに画像の説明を入力     < 悪い

ご覧のとおり、imageプロパティには大きな値があり、両方の列が大きくなり、s の後に多くのスペースがありJLabelます。

だから、私はLayoutManager各列を必要なだけ大きくする を探しています。
このようなレイアウトが必要です(Gimpで編集されています):

ここに画像の説明を入力     < 良い

ありがとう

4

6 に答える 6

5

これには SpringLayout を使用できます。SpringLayout の使用方法を参照してください。

レイアウト例:

ここに画像の説明を入力

レイアウトをネストすることもできることに注意してください。

于 2011-06-23T16:27:45.167 に答える
2

SpringLayout私がこのようなフォームに通常使用するものです。私GridBagLayoutもうまくいくと思いますが。

于 2011-06-23T16:28:42.563 に答える
2

私はGridLayoutとBorderLayoutを組み合わせてすべてをハックしようとする傾向があるので、おそらくそれは最善の解決策ではありませんが...

2つのGridLayoutを作成します。どちらも1つの列を持ちます。1つはラベル用、もう1つはコントロール用です。

次に、親となるBorderLayoutを作成します。

左側のグリッドをBorderLayout.WESTに追加し、右側のグリッドをBorderLayout.CENTERに追加します。

于 2011-06-23T16:29:31.107 に答える
2

これは 11 時間前に回答されましたが、ちょっと立ち寄って提案したいと思いました。GroupLayoutをお勧めします。

GroupLayout最近、名前/値ダイアログのネストされたレイアウトから抜け出そうとしていて、 &の両方を見ましたSpringLayout。によって提供される唯一の利点SpringLayoutは、ラベルの右揃えのテキストを実現できることでした (GL を使用してそれを行う方法があるかもしれませんが、方法がわかりませんでした)。欠点としては、Java チュートリアルの例ではSpringLayout、レイアウトの制約を定義するために、途方もない「ヘルパー クラス」を使用していました。

最終的に (これは非常に短い「研究」でした)、 を使用することにしGroupLayoutました。

于 2011-06-24T04:03:59.110 に答える
1

MigLayoutの使用を検討してください。現在のJDK、GridBagLayout内に制約されている場合。

于 2011-06-23T16:28:37.250 に答える
1

標準のLayoutManagerの概要は次のとおりです。http: //download.oracle.com/javase/tutorial/uiswing/layout/visual.html

GUIを手動でコーディングする場合は、たとえば、GridBagLayoutまたは非標準のMigLayoutを使用できます。

GUIビルダー(NetBeansのビルダーなど)を使用する場合は、GroupLayoutを使用できます。

于 2011-06-23T16:29:21.420 に答える