将 JPanel 添加到 JFrame 不起作用



如何将JPanel添加到其他类的JFrame??我尝试过使用这段代码,但当我编译它时,它在MyFrame.java(标签为"Hello World")中没有显示任何组件。我的代码出了什么问题?

MainFrame.java中的按钮称为MyFrame.java

这是代码:

MyPanel.java(包含按钮和标签)

public class MyPanel extends javax.swing.JPanel {
    public MyPanel() {
        initComponents();
        myLabel.setText("Hello World");
    }
}

MyFrame.java

public class MyFrame extends javax.swing.JFrame {
    MyPanel myPanel = new MyPanel();
    public MyFrame() {
        initComponents();
        this.add(myPanel);
    }
}

MainFrame.java

public class MainFrame extends javax.swing.JFrame {
    public MainFrame() {
        initComponents();
    }
    private void btnCallFrameActionPerformed(java.awt.event.ActionEvent evt) {                                         
        new MyFrame().setVisible(true);
    }
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new MainFrame().setVisible(true);
            }
        });
    }
}       

我不知道您在initComponents方法中做了什么。所以我稍微修改了你的代码。

public class MyPanel extends javax.swing.JPanel {
    public MyPanel() {
        initComponents();
        //I don't know what you did in initComponents(); so I ve changed the layout to be sure that you didn't use null layout. 
        this.setLayout(new BorderLayout());
        JLabel myLabel = new JLabel();
        myLabel.setText("Hello World");
       //adding the label in MyPanel 
       this.add(myLabel);
    }
}
public class MyFrame extends javax.swing.JFrame {
    MyPanel myPanel = new MyPanel();
    public MyFrame() {
        initComponents();
        // added because of the former reason
        this.setLayout(new BorderLayout());
        this.add(myPanel);
    }
}

我希望你确信你可以用一些按钮调用btnCallFrameActionPerformed方法。

最新更新