0

Swing コンポーネントを垂直方向にスケーリングせず、水平方向にもスケーリングしないようにしようとしています (つまり、1 つの自由軸のみを持たせたいと考えています。場合によっては水平方向にスケーリングすることも、垂直方向にスケーリングすることもできます)。その他)。

多数のJPanelを追加せずに、これを行うエレガントな方法はありますか?

LE: 受け取った既に作成されたレイアウトに大幅な変更を加えたくありません。

JTextField.don'tScaleVerticallyIdiot(); のような、この問題に対する魔法のような簡単な修正を期待しています。

4

4 に答える 4

3

適切なレイアウト マネージャーを使用する必要があります。

最も強力な 2 つはMigLayoutFormLayoutです。FormLayout はWindowBuilderのようなウィンドウ デザイナーでのみうまく機能しますが、直接使用する方が簡単なので、個人的には MigLayout を好みます。

どちらも同様の機能特性を持っています。

MigLayout を使用すると、コンポーネントが特定の軸に沿って拡大できるかどうかを指定できます。また、拡大できる場合は、どのようなウェイトを提供する必要があるかを指定できます (他のコンポーネントに余分なスペースが入るのではなく)。

于 2012-09-11T21:35:49.550 に答える
2

LayoutManager現在使用しているもの については言及していません。

個人的に、私はGridBagLayoutあなたが達成しようとしていることに使用します。

于 2012-09-11T22:23:09.790 に答える
2

BorderLayoutをコンテナーのLayoutManagerとして設定することで、それを実現できると思います。

  • BorderLayout.EASTにswing コンポーネントを追加すると、垂直方向のみにスケーラブルになります。
  • BorderLayout.WESTにswing コンポーネントを追加すると、垂直方向のみにスケーラブルになります。
  • BorderLayout.NORTHにswing コンポーネントを追加すると、水平方向のみにスケーラブルになります。
  • BorderLayout.SOUTHにswing コンポーネントを追加すると、水平方向のみにスケーラブルになります。
  • BorderLayout.CENTERにswing コンポーネントを追加すると、水平方向垂直方向の両方にスケーラブルになります。
于 2012-09-11T21:35:13.310 に答える
1

複数のJPanelを追加せずに、フレームをドラッグするのと同じ高さと水平方向のスケールで1行にします。

私はそれができると思いBoxLayoutますPAGE_AXIS

于 2012-09-12T13:04:29.137 に答える