1

私は次のことをしようとします:

  1. にコンポーネントを追加JFrameするBorderLayout
  2. 別のコンポーネントをJFrame

を使用しているため、新しいコンポーネントが古いコンポーネントを「上書き」することを期待しますBorderLayout。を呼び出す前に古いコンポーネントを上書きすると、これは機能しますpack()。を呼び出した後に2 番目のコンポーネントを追加するとpack()、両方のコンポーネントが表示されたままになります。例:

public class Test extends JFrame{
    public Test(){
        setLayout(new BorderLayout());
        add(new JLabel("Quite a long text"));
        setVisible(true);
        pack();
        add(new JLabel("Another text"));
    }
}

結果:コンポーネントを追加する前に pack() を呼び出す

public class Test extends JFrame{
    public Test(){
        setLayout(new BorderLayout());
        add(new JLabel("Quite a long text"));
        setVisible(true);
        add(new JLabel("Another text"));
        pack();
    }
}

結果:コンポーネントを追加した後に pack() を呼び出す

と を追加しようvalidate();としましrepaint();たが、それは役に立ちません。ここで何がうまくいかないのですか?

4

1 に答える 1