17

Dimensionオブジェクトを必要とするコンポーネントの幅または高さのみを変更するにはどうすればよいですか?現在、私はこのようにしています:

jbutton.setPreferredSize(new Dimension(button.getPreferredSize().width, 100));

しかし、私はそれを間違った方法でやっているような気がします。より良い方法がある場合、これにアプローチするための最良の方法は何ですか?

4

3 に答える 3

19

まず第一に、JButtonの寸法を変更していません。希望するサイズを指定します。これは、挿入先のコンポーネントのLayoutManagerに応じて、最終的にJButtonに適用できます。

Dimensionオブジェクトの使用に関係することは問題ありません。最終的には、ディメンションフィールドに直接アクセスできます。

Dimension d = button.getPreferredSize();
d.height = 10;
jbutton.setPreferredSize(d); 

しかし、それはほとんど同じことです。

于 2011-08-24T14:58:55.100 に答える
3

私はクレオパトラが言ったようにそれをすることになった。PreferredSizeを変更するのではなく、レイアウトマネージャーに任せます。これは、コンポーネントのサイズを変更するための適切な方法であるためです。

于 2011-08-26T07:47:16.993 に答える
0

同じ質問がありましたが、アプリケーションが異なります。BoxLayoutを使用してコンテナに追加するJPanelの高さのみを制限する必要がありました。そのため、setMaximumSizeを呼び出し、そのPreferredSizeを幅に使用すると、水平方向の寸法で期待したストレッチが得られませんでした。それが好ましいサイズだったので、それはより短く出てきました。レイアウトマネージャーが適用している実際の幅がわからなかったため、新しいディメンションで使用する幅がわかりませんでしたが、高さの設定は問題なく機能しました。最終的な答えは次のとおりです。

myJPanel.setMaximumSize(new Dimension(<some overly high width value>, <desired height>));

次に、BoxLayoutマネージャーは、myJpanelに、コンテナーを水平方向に埋める正しい低い幅と、垂直方向の伸びを防ぐために必要な低い高さを指定しました。

于 2020-04-21T03:49:11.190 に答える