gpt4 book ai didi

Java:GridLayout 单元格似乎合并

转载 作者:行者123 更新时间:2023-12-03 05:23:19 25 4
gpt4 key购买 nike

首先,我是编程新手,这是我在 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

最佳答案

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 添加了不同的标签。

希望这足够清楚。有什么不清楚的地方就问。

关于Java:GridLayout 单元格似乎合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11100577/

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