如何将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方法。