理想情况下,我的工具栏中会有2列按钮,但是具有固定的尺寸(30,30)。我目前有一个网格布局,适用于布局,但按钮拉伸适合,我希望按钮保持方形。实现这一目标的最佳方法是什么?
public SpecToolbar(SpecController con) {
super(SwingConstants.VERTICAL);
setLayout(new GridLayout(5, 2));
setFloatable(false);
ButtonGroup g = new ButtonGroup();
add(new SelectorButton(con, g));
add(new InfoButton(con));
add(new ZoomInButton(con, g));
add(new ZoomOutButton(con, g));
add(new CrossButton(con, g));
add(new GridButton(con));
add(new BaselineUpButton(con));
add(new BaselineDownButton(con));
add(new PeakUpButton(con));
add(new PeakDownButton(con));
由于
答案 0 :(得分:0)
简单的答案是使用不同的布局。如果要水平对齐按钮,只需使用简单的FlowLayout
即可。如果您想垂直对齐它们,请使用BoxLayout,GridBagLayout或MiGLayout.。
答案 1 :(得分:0)
但按钮拉伸以适合
这是什么意思?由于你有2列和5行,我猜你正在将工具栏添加到BorderLayout的WEST中,这样按钮的高度会拉伸吗?
您可以通过嵌套布局来解决问题。例如:
JPanel buttonPanel = new JPanel( new GridLayout(0, 2) );
buttonPanel.add(...);
JPanel toolbarPanel = new JPanel( new BorderLayout() );
toolbarPanel.add(buttonPanel, BorderLayout.NORTH);
frame.add(toolBarPanel, BorderLayout.WEST);
现在所有按钮的大小都相同。任何额外的高度都会低于按钮,因此它们不会垂直拉伸。