我使用从数据库中读取的动态内容填充GridBagLayout JPanel。我的问题是如果我能找到一种方法来设置最后一列权重为1.0。 Usualy当我创建静态GridBagLayout的面板,我可以做这样的事情:GridBagLayout行权重
GridBagLayout gbl_accPanel = new GridBagLayout();
gbl_accPanel.columnWeights = new double[]{1.0};
gbl_accPanel.rowWeights = new double[]{0.0, 0.0, 0.0, 0.0, 1.0};
accPanel.setLayout(gbl_accPanel);
但现在,在我的情况,我不知道我有多少行都会有,所以我需要一种方法来推动所有的内容在顶部,这意味着使最后一行的权重为1.0来填充我的容器的其余部分。
很明显,我可以保留一个计数我添加的元素,比设置rowWeights,比revalidate();重绘();但我不喜欢这种方式。那么有没有更好的方法?
这里是一个图片,如果我的问题不清楚:
什么,我现在做的:
public void setAccountRowWeights(int n)
{
weights = new double[n];
for(int i=0; i<n-1; ++i)
weights[i] = 0.0;
weights[n-1] = 1.0;
gbl_accPanel.rowWeights = weights;
}
我可以将weighty = 1.0添加到最后一个组件,但它仍然很好,但我必须自己确定最后一个组件。我在考虑是否可以设置gridbaglayout,以便我的最后一个组件将始终自动填充容器的其余部分。 – Chris
对我而言,问题仍不清楚。您是否希望所有组件对于给定记录在“X轴”上占据相同的空间?如果是的话,那么你可以简单地将组件的数量分成'1.0 /(double)noOfComponents',以获得每个组件的'weightx'值。如果没有,那么你可以尝试'GridBagConstraints.REMAINDER'作为最后一个组件。虽然如果您可以提供所需的小图,那可能对了解情况有更多的帮助:-) –