Dimension
オブジェクトを必要とするコンポーネントの幅または高さのみを変更するにはどうすればよいですか?現在、私はこのようにしています:
jbutton.setPreferredSize(new Dimension(button.getPreferredSize().width, 100));
しかし、私はそれを間違った方法でやっているような気がします。より良い方法がある場合、これにアプローチするための最良の方法は何ですか?
Dimension
オブジェクトを必要とするコンポーネントの幅または高さのみを変更するにはどうすればよいですか?現在、私はこのようにしています:
jbutton.setPreferredSize(new Dimension(button.getPreferredSize().width, 100));
しかし、私はそれを間違った方法でやっているような気がします。より良い方法がある場合、これにアプローチするための最良の方法は何ですか?
まず第一に、JButtonの寸法を変更していません。希望するサイズを指定します。これは、挿入先のコンポーネントのLayoutManagerに応じて、最終的にJButtonに適用できます。
Dimensionオブジェクトの使用に関係することは問題ありません。最終的には、ディメンションフィールドに直接アクセスできます。
Dimension d = button.getPreferredSize();
d.height = 10;
jbutton.setPreferredSize(d);
しかし、それはほとんど同じことです。
私はクレオパトラが言ったようにそれをすることになった。PreferredSizeを変更するのではなく、レイアウトマネージャーに任せます。これは、コンポーネントのサイズを変更するための適切な方法であるためです。
同じ質問がありましたが、アプリケーションが異なります。BoxLayoutを使用してコンテナに追加するJPanelの高さのみを制限する必要がありました。そのため、setMaximumSizeを呼び出し、そのPreferredSizeを幅に使用すると、水平方向の寸法で期待したストレッチが得られませんでした。それが好ましいサイズだったので、それはより短く出てきました。レイアウトマネージャーが適用している実際の幅がわからなかったため、新しいディメンションで使用する幅がわかりませんでしたが、高さの設定は問題なく機能しました。最終的な答えは次のとおりです。
myJPanel.setMaximumSize(new Dimension(<some overly high width value>, <desired height>));
次に、BoxLayoutマネージャーは、myJpanelに、コンテナーを水平方向に埋める正しい低い幅と、垂直方向の伸びを防ぐために必要な低い高さを指定しました。