簡體   English   中英

如何在構造函數外部將Jlabel添加到Jpanel?

[英]how to add Jlabel to Jpanel outside the constructor?

我可以使用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("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時,將對JPanel進行驗證。 在初始化階段添加標簽更為簡單,因為您只需調用JLabel#setText而無需revalidate/repaint調用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM