-1

理想情况下,我的工具栏中会有 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));

谢谢

4

2 回答 2

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);

现在您所有的按钮都将具有相同的大小。任何额外的高度都将低于按钮,因此它们不会被垂直拉伸。

于 2013-06-05T19:40:33.440 回答
0

简单的答案是使用不同的布局。如果您想水平对齐按钮,只需使用 simple FlowLayout. 如果要垂直对齐它们,请使用BoxLayoutGridBagLayoutMiGLayout。.

于 2013-06-05T19:07:56.277 回答