gpt4 book ai didi

Java GridBag 布局无法正常工作

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:51:56 24 4
gpt4 key购买 nike

我有两个表和两个按钮。我希望 table-1 位于第一列并且宽度为 3 个单位,然后我希望表格右侧的两个按钮更窄(宽度为 1 个单位),我希望按钮 1 位于顶部,按钮 2 位于底端。现在,在这些按钮的右侧,我希望另一个表(表 2)的宽度再次达到 3 个单位。为此,我使用了以下约束:

        //table1
c = new GridBagConstraints(0, 0, 3, 2, 1, 1,
GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL,
new Insets(0, 0, 0, 0), 0, 0);
c.fill = GridBagConstraints.BOTH;
outerPanel.add(all_app_scrollpane, c);

//button1
c = new GridBagConstraints(3, 0, 1, 1, 1, 1,
GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL,
new Insets(0, 0, 0, 0), 0, 0);
outerPanel.add(addButton, c);

//button2
c = new GridBagConstraints(3, 1, 1, 1, 1, 1,
GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL,
new Insets(0, 0, 0, 0), 0, 0);
outerPanel.add(removeButton, c);

//table2
c = new GridBagConstraints(4, 0, 3, 2, 1, 1,
GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL,
new Insets(0, 0, 0, 0), 0, 0);
c.fill = GridBagConstraints.BOTH;
outerPanel.add(curr_app_scrollpane, c);

我们来看table1的GridBagCONstraints。据我所知,第一个参数声明它将从 0. 列开始,并且宽度为 3 列(第三个参数)。然后 button1 将从第三列开始,并且将是一列宽。但我想我知道有什么不对,因为结果与我预期的大不相同。

enter image description here

我希望这些按钮更窄,表格更宽。我怎样才能做到这一点?我想使用 GridBag 来完成这个,因为这个小面板只是一个非常复杂的 gui 的一小部分,而整个 gui 是使用 gridbag 设计的。所以我不想改变编码风格。

最佳答案

您必须设置布局的增长设置 (weightx),以便只有左列和右列增长。

像这样:

    contentPane.setLayout(new GridBagLayout());
((GridBagLayout)contentPane.getLayout()).columnWidths = new int[] {0, 0, 0, 0};
((GridBagLayout)contentPane.getLayout()).rowHeights = new int[] {0, 0, 10, 0, 0, 0};
((GridBagLayout)contentPane.getLayout()).columnWeights = new double[] {1.0, 0.0, 1.0, 1.0E-4};
((GridBagLayout)contentPane.getLayout()).rowWeights = new double[] {1.0, 0.0, 0.0, 0.0, 1.0, 1.0E-4};

//---- leftBtn ----
leftBtn.setText("left Button");
contentPane.add(leftBtn, new GridBagConstraints(0, 0, 1, 5, 0.0, 0.0,
GridBagConstraints.CENTER, GridBagConstraints.BOTH,
new Insets(0, 0, 0, 0), 0, 0));

//---- rightBtn ----
rightBtn.setText("right Button");
contentPane.add(rightBtn, new GridBagConstraints(2, 0, 1, 5, 0.0, 0.0,
GridBagConstraints.CENTER, GridBagConstraints.BOTH,
new Insets(0, 0, 0, 0), 0, 0));

//---- addBtn ----
addBtn.setText("add Button");
contentPane.add(addBtn, new GridBagConstraints(1, 1, 1, 1, 0.0, 0.0,
GridBagConstraints.CENTER, GridBagConstraints.BOTH,
new Insets(0, 0, 0, 0), 0, 0));

//---- remBtn ----
remBtn.setText("rem Button");
contentPane.add(remBtn, new GridBagConstraints(1, 3, 1, 1, 0.0, 0.0,
GridBagConstraints.CENTER, GridBagConstraints.BOTH,
new Insets(0, 0, 0, 0), 0, 0));

所以它给出了: demo

问候弗洛里安

编辑:这里是 IDE 的屏幕截图,按钮之间有额外的空间:demo2

关于Java GridBag 布局无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11225511/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com