1

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**
        }
4

1 に答える 1

5

が表示された後に新しく追加されたコンポーネントを表示するには、通常は とJPanelを呼び出す必要があります。その理由はrevalidate()repaint()

add(new JLabel("123"));

コンストラクターで動作し、JPanelそのコンテナー(通常はJFrame. 初期化段階でラベルを追加すると、呼び出すだけで呼び出しが不要になるため、より簡単になりJLabel#setTextますrevalidate/repaint

于 2013-03-27T02:00:43.807 に答える