2012-06-27 130 views
-5

我在netbeans中創建了兩個類;其中一個是JPanel表單,另一個是JFrame表單; 如何將JPanel類添加到JFrame表單類中? 我在JFrame form Class的構造函數中編寫了這段代碼,但它並沒有工作。如何在NetBeans中將JPanel類添加到JFrame表單類中?

public JFrameClass() { 
     initComponents(); 
     this.getContentPane().add(jpc = new JPanelClass()); 
     jpc.setVisible(true); 
     this.pack(); 
     this.setVisible(true); 

    } 
+0

*「沒有工作。」*你期望什麼發生嗎?反而發生了什麼?爲了更快地獲得更好的幫助,請發佈[SSCCE](http://sscce.org/)。 –

+0

先嚐試一些基本的java教程。 'this.getContentPane()。add(jpc = new JPanelClass());' –

回答

-1

設置JPanel的限制,以使容器知道在哪裏畫它

 public void run() { 
      NewJFrame frame = new NewJFrame(); 
      NewJPanel panel = new NewJPanel(); 

      panel.setBounds(0, 0, 200, 200); 
      frame.add(panel); 
      frame.setVisible(true); 
     } 
+1

調用'setBounds'將在稍後導致問題。使用佈局。可以將內容放入面板以使其具有'自然非零大小',或者如果它是一個'純粹渲染'組件,設置或覆蓋首選大小。 –

+0

setBound!YES ...!非常感謝你:)。 – Blueferi

+0

@Blueferi答案不好(不是你已經接受了)。您接下來的10個問題將沿着「如何解決我的組件佈局?」的問題。 –

1

如何添加JPanel類的成JFrame窗體類在NetBeans?

在你JFrame類,只要將JPanel其添加到Container

JPanel panel = new JPanelClass(); 
controls.add(panel); 

注意:你應該有一個名爲例如createAndAddCompontents()一些私人無效的方法,並調用它的構造函數。

public JFrameClass() { 
    ... 
    createAndAddCompontents(); 
} 

然後,當您要執行應用程序,以便在main()方法,你應該把它類似這樣的:

SwingUtilities.invokeLater(new Runnable() { 
    @Override 
    public void run() { 
     YouJFrameClass initAndShowComponents = new YouJFrameClass(); 
     initAndShowComponents.setVisible(true); 
} 
    }); 
+0

我這樣做了:public JFrameClass(){0} {0} {0} {0} initComponents(); this.add(jpc = new JPanelClass()); }但沒有發生任何事情: – Blueferi

+0

所以你做錯了什麼。 – Sajmon

+0

我是新來的java可以在這裏寫一個示例代碼:( – Blueferi

3

你需要確保JPanelClass是從那裏你JFrameClass可見。 然後執行以下操作:

JPanelClass jpc = new JPanelClass() 
this.getContentPane().add(jpc); 

而且,沒有必要調用jpc.setVisible(true);

生成的代碼應該是:

public JFrameClass() { 
     initComponents(); 
     JPanelClass jpc = new JPanelClass() 
     getContentPane().add(jpc); 
     pack(); 
     setVisible(true); 
}