在交替列GridBagLayout中设置组件

时间:2017-04-05 19:48:39

标签: java swing

有没有办法在交替的第0,2,4,6列中设置组件而不使用GridBagConstraints在GridBagLayout中使用空组件填充1,3,5?

Java中的示例将第5个按钮设置为从第1列开始,但也许是因为它上面的行已经设置了?
https://docs.oracle.com/javase/tutorial/uiswing/layout/gridbag.html

2 个答案:

答案 0 :(得分:2)

  

有没有办法在交替的列0,2,4,6中设置组件而不填充1,3,5,并在GridBagLayout中使用空组件

没有。如果没有为单元定义组件,那么基本上它的大小为0.

布局无法猜出您期望“空列”的大小。

也许您可以使用“insets”约束来为列之间提供空间。

答案 1 :(得分:1)

您可以使用行高和列宽定义GridBagLayout

int[]  rowHeights = new int[] { 50, 50, 50};
int[] columnWidths = new int[] { 100, 100, 100, 100, 100};
GridBagLayout layout = new GridBagLayout();
layout.rowHeights = rowHeights;
layout.columnWidths = columnWidths;

使用GridBagConstraint添加组件,如下所示

    JPanel panel = new JPanel();
    panel.setLayout(layout);

    JLabel label1 = new JLabel("Label 1");
    JLabel label2 = new JLabel("Label 2");
    JLabel label3 = new JLabel("Label 3");

    panel.add(label1,  new GridBagConstraints(
            0, 0, 1, 1, 0, 0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, 
            new Insets(0,0, 0, 0), 0, 0));

    panel.add(label2,  new GridBagConstraints(
            2, 0, 1, 1, 0, 0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, 
            new Insets(0,0, 0, 0), 0, 0));

    panel.add(label3,  new GridBagConstraints(
            4, 0, 1, 1, 0, 0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, 
            new Insets(0,0, 0, 0), 0, 0));