如何从paintcomponent()向gridbaglayout添加元素

5f0d552i  于 2021-06-29  发布在  Java
关注(0)|答案(0)|浏览(228)

在下面的代码中,在构造器中,标签被正确地创建并显示在屏幕上。请注意,它已添加到 GridBagLayout() 布局管理器。然后,在 paintComponent() 方法,重新设置jpanel的内容并再次添加标签。但是,这次标签不会显示在屏幕上。我希望它能正常添加,但事实并非如此。为什么会这样?

public class MyPanel extends JPanel {

    private final GridBagConstraints grid = new GridBagConstraints();

    public MyPanel () {
        setBounds(200, 200, 1000, 1000);
        setLayout(new GridBagLayout());
        setOpaque(false);
        setVisible(false);

        grid.anchor = GridBagConstraints.PAGE_END;

        JLabel oldLabel = new JLabel("This is an old Label");
        add(oldLabel, grid);
    }

    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);

        removeAll();

        JLabel newLabel = new JLabel("This is a new Label");
        add(newLabel, grid);

        revalidate();
        repaint();
    }

}

在这个例子中,组件是已知的,但在我的情况下,我有一个变量的组件数量是事先不知道的,并在程序中更改。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题