如果添加为类,则JPanel不会显示在JFrame上

时间:2018-01-25 15:41:48

标签: java swing

我正在尝试将JButton添加到我作为类创建的JPanel中,如下所示:

public class Popup extends Main {

    public Popup() {
        JPanel popup = new JPanel();
        JButton button = new JButton("SUPER COOL BUTTON");
        popup.add(button);
        popup.setPreferredSize(new Dimension(50,50));
    }
}

Main.java:

private void createFrame() {

    JFrame frame = new JFrame("TEAM PROJECT");

    frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    frame.add(new Popup(), BorderLayout.CENTER);
    frame.pack();
    frame.setLocationRelativeTo(null);
    frame.setVisible(true);
}

当我这样做时,框架会创建但没有任何内容。尝试使用paintComponent在面板上绘图时,类似的代码也有效,那么您是否可以通过这种方式添加SwingComponents

如何才能将JPanel中创建的Popup添加到Main中创建的框架中?

1 个答案:

答案 0 :(得分:2)

为什么要扩展Main(因为它似乎是您创建JFrame的类)?

如果你想向面板添加一个按钮,那么扩展JPanel并将你的按钮添加到你的类(这是一个JPanel,所以不需要创建另一个JPanel):

public class Popup extends JPanel {

    public Popup() {
        //JPanel popup = new JPanel();
        JButton button = new JButton("SUPER COOL BUTTON");
        add( button );
        //popup.add(button);
        //popup.setPreferredSize(new Dimension(50,50));
    }
}