gpt4 book ai didi

java - 如何在构造函数外将 Jlabel 添加到 Jpanel?

转载 作者:行者123 更新时间:2023-11-29 07:59:02 25 4
gpt4 key购买 nike

我可以在 Jpanel 构造函数中使用 add(new Jlabel()) 在我的 Jpanel 上创建标签,但是一旦我使用其他函数调用 add() ,标签就不会显示在面板上。我做错了什么?

public class DisplayPanel extends JPanel {


JLabel headerField = new JLabel("Choose a file to generate report.");

JLabel dateField = new JLabel("123");
JLabel meanField = new JLabel("");

JLabel minField = new JLabel("");

JLabel maxField = new JLabel("");

JLabel stdDevField = new JLabel("");

public DisplayPanel() {
super();
setBackground(Color.white);
setLayout(new GridLayout(6, 1));


add(headerField);
**//add(new JLabel("123")); this will work**

}


public void setFields(DataManager d)
{
dateField.setText(d.getStartDate() + " - " + d.getEndDate());
meanField.setText("Mean: " + d.getMean());
minField.setText("Min: " + d.getMin());
maxField.setText("Max: " + d.getMax());
stdDevField.setText("Std Dev: " + d.getStdev());
this.add(new JLabel("123")); **//this doesn't work**
}

最佳答案

为了让任何新添加的组件在 JPanel 可见后出现,您需要调用 revalidate() 并且通常是 repaint() 。原因是

add(new JLabel("123"));

在构造函数中工作 JPanel 在添加到 its 容器(通常是 JFrame)时进行验证。在初始化阶段添加标签更简单,因为您只需调用 JLabel#setText 而无需调用 revalidate/repaint

关于java - 如何在构造函数外将 Jlabel 添加到 Jpanel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15650701/

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