use*_*263 2 java merge swing cell grid-layout
首先,我是编程的新手,这是我在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);
}
}
Run Code Online (Sandbox Code Playgroud)
这是我添加运行以下代码时会发生什么的图像:http: //www.freeimagehosting.net/1hqn2
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);
}
}
Run Code Online (Sandbox Code Playgroud)
好的,为什么它不适合你的情况但在我的情况下工作正常?问题是您添加标签4次并更改其间的文本.在布局中,单个组件只能存在一次.那么当你将标签添加到第二次/第三次/第四次时,它在网格中的位置将被更新而不会再次添加.
在我的情况下,我实际上JLabel在循环的每个迭代中创建一个新的,因此添加一个不同的标签JPanel.
希望这很清楚.只要问一下有什么不清楚的地方.