【发布时间】:2018-10-29 11:27:57
【问题描述】:
我有一个循环生成一些标题和描述,它们是字符串值,我制作了标签以包含这两个字符串,我想将它们添加到 JScrollPane,但由于某种原因我的代码不起作用,我'现在没有收到任何错误,滚动窗格中没有添加任何项目,这是我的代码:
package testa;
import java.awt.Color;
import java.awt.FlowLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
public class test extends JFrame {
JLabel[] titles;
JLabel[] descriptions;
JPanel[] panels;
JScrollPane jScrollPane1 = new JScrollPane();
JPanel bigPanel = new JPanel();
public test() {
this.setLocationRelativeTo(null);
this.setSize(1000, 500);
this.jScrollPane1.setSize(1000, 500);
this.getContentPane().add(this.jScrollPane1);
this.setVisible(true);
requetezQuery();
}
public void requetezQuery() {
int resultsList = 10;
this.titles = new JLabel[resultsList];
this.descriptions = new JLabel[resultsList];
this.panels = new JPanel[resultsList];
for (int i = 0; i < resultsList; i++) {
String title = "Test Title " + i;
String resume = "Test Resume " + i;
this.titles[i] = new JLabel();
this.descriptions[i] = new JLabel();
this.panels[i] = new JPanel();
this.panels[i].setLayout(new FlowLayout());
this.titles[i].setText(title);
this.descriptions[i].setText(resume);
this.titles[i].setForeground(Color.red);
this.descriptions[i].setForeground(Color.red);
this.panels[i].add(this.titles[i]);
this.panels[i].add(this.descriptions[i]);
this.bigPanel.add(panels[i]);
}
this.jScrollPane1.add(this.bigPanel);
}
public static void main(String args[]) {
test a = new test();
}
}
我尝试 System.out.println 标题和简历变量及其工作,所以问题不在于它们。
【问题讨论】:
-
要发布完整的答案,我们需要一个完整的问题,包括minimal reproducible example。除了我在下面提到的错误之外,您可能还犯了一个非常基本的错误,即未显示代码中的错误。
-
我再次编辑代码,我制作了一个包含 JPanel 的 Jpanel,然后 JScrollPane 将包含多个 Big JPanel,但它仍然无法正常工作
-
您仍在 JScrollPane 上调用
jScrollPane1.add(...)。正如多次提到的,你永远不应该这样做。 -
1) 使用逻辑一致的形式缩进代码行和块。缩进是为了让代码流更容易理解! 2) 源代码中的一个空白行是永远需要的。
{之后或}之前的空行通常也是多余的。 3) 请学习常见的 Java 命名法(命名约定 - 例如EachWordUpperCaseClass、firstWordLowerCaseMethod()、firstWordLowerCaseAttribute,除非它是UPPER_CASE_CONSTANT)并始终如一地使用它。
标签: java swing jscrollpane