有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我正在尝试将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));
    }
}

梅因。爪哇:

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

如何将在Popup中创建的JPanel添加到在Main中创建的帧中


共 (1) 个答案

  1. # 1 楼答案

    为什么要扩展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));
        }
    }