以下代码
int numberofrows = 3;
JFrame frame = new JFrame("Question 12844473");
frame.setLayout(new MigLayout("fill, debug", "", "[][][150]"));
for(int i=0; i<numberofrows-1; ++i) {
frame.add(new JButton("Button #" +i), "wrap");
}
frame.add(new JButton("Exit"));
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.pack();
frame.setVisible(true);
提供以下图片
意味着第三行受设置影响,因为每个方括号模式对应于每一行。
但如果行数变化,如何影响最后一行呢?或者如何影响所有行?或者如何影响除最后一行之外的所有行,同时单独设置最后一行?
我的意思是不知道行数。
答案 0 :(得分:3)
您不能一般地设置行约束,以便它们适用于任意数量的行。但是,您始终知道行数,否则您也无法呈现该行数。知道行数,您可以以编程方式生成约束字符串。 E.g。
String rowConstraint = ""
rowConstraint += "[]"
for(int i = 1; i < numberOfRows - 1; i++) {
rowConstraint += "[150]"
}
rowConstraint += "[]"
frame.setLayout(new MigLayout("fill, debug", "", rowConstraint));
答案 1 :(得分:1)
你的意思是你处于这种情况:
JFrame frame = new JFrame("Question 12844473");
frame.setLayout(new MigLayout("fill, debug", "", "[][][150]"));
while( 0 != (i = hasRow()))
{
frame.add(new JButton("Button #" +i), "wrap");
}
...现在当hasRow()
返回0时,为时已晚,因为您已经在之前的迭代中添加了一个框架,并且您无法取消添加并重新添加其他方式。
你可以这样做:
prev = hasRow();
while( 0 != (i = hasRow()))
{
frame.add(new JButton("Button #" + prev), "wrap");
prev = i;
}
// Now prev is the value of the last-but-one element returned
// and you can process it differently.
frame.add(new JButton("Button #" + prev));
您可以将此模式调整为任何方法,一次返回一行,但不知道您是否会获得EOF。
我不知道是否可以完成这样的帧添加:这只是一个通用的逐个处理技巧,我将HTML生成器扯掉了。