2015-07-21 57 views
1

我是新的Java GUI開發人員,我有一個問題。設計帶有多個JPanels的JFrame?

是否可以使用多個Jpanel創建Jframe?我的想法是創建一個類,在JPanel中添加組件,並從另一個類創建JFrame,添加JPanel類的多個對象。

目前我在做測試:

public class Principal { 

    private JFrame window; 

    public Principal(){ 

     window = new JFrame("Principal");   
    } 

    /** 
    * @return the finestra 
    */ 
    public JFrame getFinestra() { 
     return window; 
    } 
}` 

子類

public class Childs { 

    private JPanel panel; 
    private JLabel text1; 

    public Childs(){ 
     panel = new JPanel(); 
     text1 = new JLabel(); 

     text1.setText("TEXT"); 
     panel.add(text1); 
    } 

    /** 
    * @return the panel 
    */ 
    public JPanel getPanel() { 
     return panel; 
    } 
} 

TestFrame類

public class TestFrame { 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 

     Principal p = new Principal(); 
     Childs c = new Childs(); 
     Childs c2 = new Childs(); 

     p.getFinestra().add(c.getPanel()); 
     p.getFinestra().add(c2.getPanel()); 
     p.getFinestra().setVisible(true); 
    } 
} 
` 
+3

*「是否可以使用多個Jpanel創建Jframe?」*是的。事實上,**大多數**真實世界的GUI都有多個面板。我使用它們來允許在GUI的不同部分設置不同的佈局。請參閱結合佈局的[本示例](http://stackoverflow.com/a/5630271/418556)。 –

+0

好的,謝謝。我會讀這個例子。 – ruzD

回答

0

這當然是可能有多個JPanels在JFram中即您可以從JFrame中有getContentPane(),這在你的例子會工作作爲

p.getFinestra().getContentPane(); 

要了解如何將您的JPanel■將到JFrame,你應該學習一些Layout小號獲取組件Container。這裏是一個很好的資源,這個網站有更多的:https://docs.oracle.com/javase/tutorial/uiswing/layout/index.html

例如使用FlowLayout(默認的)

p.getFinestra().getContentPane().setLayout(new FlowLayout()); 
p.getFinestra().getContentPane().add(c); 
p.getFinestra().getContentPane().add(c2); 

//It is also a good habit to call pack() before setting to visible 
p.getFinestra().pack() 
p.getFinestra().setVisible(true); 

而且隨着英語很短的教訓,孩子的複數兒童

+0

我已經明白了。我創建了框架,並將內容面板添加到組件中。你是對的,孩子 - >孩子:( - – ruzD