2016-05-10 9 views
-1

JPanelを他のクラスのJFrameに追加するには?私はこのコードで試しましたが、コンパイルすると、MyFrame.java( "Hello World"というラベル)には何も表示されませんでした。私のコードに何が問題なのですか?JFrameにJPanelを追加できませんでした

ここ

MyFrame.javaと呼ばMainFrame.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); 
      } 
     }); 
    } 
}  
+0

すぐに役立つようにするには、[MCVE]または[短く、自己完結型の正しい例](http://www.sscce.org/)を投稿してください。 –

答えて

0

私はあなたが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メソッドを呼び出すことができたら幸いです。

関連する問題