Java 如何在构造函数外部将Jlabel添加到Jpanel?
我可以使用add(new Jlabel())在Jpanel构造函数中为我的Jpanel创建标签,但是一旦我使用其他函数调用add(),标签就不会显示在面板上。我做错了什么Java 如何在构造函数外部将Jlabel添加到Jpanel?,java,swing,jlabel,Java,Swing,Jlabel,我可以使用add(new Jlabel())在Jpanel构造函数中为我的Jpanel创建标签,但是一旦我使用其他函数调用add(),标签就不会显示在面板上。我做错了什么 public class DisplayPanel extends JPanel { JLabel headerField = new JLabel("Choose a file to generate report."); JLabel dateField = new JLabel("1
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
添加到其容器(通常为JFrame
)时进行验证。在初始化阶段添加标签更简单,因为您只需调用JLabel#setText
,无需调用revalidate/repaint
调用。为了在JPanel
可见后显示任何新添加的组件,您需要调用revalidate()
,通常是repaint()
。原因是
add(new JLabel("123"));
在构造函数中工作将JPanel
添加到其容器(通常为JFrame
)时进行验证。在初始化阶段添加标签更简单,因为您只需调用JLabel#setText
,无需调用revalidate/repaint