私ははっきりBoxLayoutを使用して、コンポーネントを行全体に伸ばす方法を教えてください。
要素のどれもが最大幅を持っていない場合はどうすればと言うHow To Use BoxLayoutドキュメント、見ていますか?この場合、 のすべてのコンポーネントが同一のX位置合わせを持つ場合、すべてのコンポーネントは で、そのコンテナの幅になります。
JButton
インスタンスをJPanel
に追加するとします。これらのボタンの最大幅がでない場合、であり、これらすべてのボタンでsetAlignmentX(Component.LEFT_ALIGNMENT)
が呼び出されます。これらのボタンのそれぞれは、行全体に伸びる必要があります。ドキュメンテーションはこれを以下の画像を使って説明しています。
私はこの仕事を得ることができません!
setMaximumSize(null
)とsetMaximumSize(new Dimension(-1,-1))
とsetMaximumSize(new Dimension(0,0))
をボタンで実行しようとしましたが、何も私には説明されている動作が与えられません。
は、ドキュメントには、それが言うときexcactlyどういう意味:
要素のどれもが最大幅を持っていない場合はどう?
最大幅は何ですか?
私が作ることができる最高のものは以下のとおりです。ドキュメントを読む私はボタンが行全体に伸びるはずだと思います。私は他のレイアウトマネージャを使うこともできますが、BoxLayout
でこれを実現したいと思います(ドキュメントが正しいと私には分かりました)。
public class CustomList extends JPanel {
private final Box box = Box.createVerticalBox();
public CustomList() {
for (int i = 0; i < 10; i++) {
JButton b = new JButton("Button item" + i);
//b.setMaximumSize(new Dimension(0,0));
b.setAlignmentX(Component.LEFT_ALIGNMENT);
box.add(b);
}
setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS));
add(box, BorderLayout.CENTER);
}
public static void main(String[] args) {
CustomList l = new CustomList();
l.setSize(200, 200);
l.setBackground(Color.red);
JFrame frame = new JFrame("Vertical Box");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(l, BorderLayout.CENTER);
frame.setSize(300, 200);
frame.setVisible(true);
}
}
JButtonをJPanelに置き換えた場合、最大サイズの設定にかかわらず、各JPanelは行全体を伸ばします。 – sbrattla