首先,我是编程新手,这是我在java和编程中的第一个主要任务,所以如果我做了一些非常愚蠢的事情请告诉我,这样我就可以纠正这个坏习惯。
无论如何,我正在尝试创建一个gridLayout,它具有可变数量的行,这些行将填充带有来自文件的文本的标签。我的问题特别是在gridLayout上是我添加的标签,并且常量似乎消失在一个巨大的单元格中。到目前为止,我所做的任何研究都没有导致任何事情,所以我认为我也可以提出这个问题。
public void fillTimetablePane(JPanel pane){
int noOfRows = pref.getNoOFPeriods()+1;
pane.setLayout(new GridLayout(noOfRows,4));
pane.setBorder(BorderFactory.createLineBorder(Color.black));
JLabel label = new JLabel();
int i=0;
while (i<4){
switch (i) {
case 0: label.setText("Lesson");
break;
case 1: label.setText("Period");
break;
case 2: label.setText("Room");
break;
case 3: label.setText("Teacher");
break;
}
i++;
pane.add(label);
}
}
这是我添加运行以下代码时会发生什么的图像: http://www.freeimagehosting.net/1hqn2
答案 0 :(得分:6)
您添加了相同的标签4次。在while循环中移动新的JLabel
答案 1 :(得分:6)
public void fillTimetablePane(JPanel pane){
int noOfRows = pref.getNoOFPeriods()+1;
pane.setLayout(new GridLayout(noOfRows,4));
pane.setBorder(BorderFactory.createLineBorder(Color.black));
//JLabel label = new JLabel(); // from here
int i=0; // V
while (i<4){ // V
JLabel label = new JLabel(); // to here
switch (i) {
case 0: label.setText("Lesson");
break;
case 1: label.setText("Period");
break;
case 2: label.setText("Room");
break;
case 3: label.setText("Teacher");
break;
}
i++;
pane.add(label);
}
}
好的,为什么它不适用于您的情况但在我的情况下工作正常?问题是您添加标签4次并更改其间的文本。在布局中,单个组件只能存在一次。那么当你第二次/第三次/第四次添加你的标签时,它在网格中的位置将被更新而不会再次添加。
就我而言,我实际上在循环的每次迭代中都创建了一个新的JLabel
,因此为JPanel
添加了不同的标签。
希望这很清楚。只要问一下有什么不清楚的地方。