2013-07-09 251 views
2

我知道一些java,但我是新開發的任何類型的GUI。我所做的大多數事情都是通過終端運行的小程序。將多個面板添加到JFrame

在任何情況下,我試圖讓我的腳溼了,我發現自己被卡住用下面的代碼:

public class MyGui { 

    public static void main(String[] args) { 
     JFrame frame = new JFrame("My Frame"); 
     JPanel leftPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); 
     JPanel centerPanel = new JPanel(new FlowLayout(FlowLayout.CENTER)); 

     JTextArea userField = new JTextArea("User:"); 
     userField.setEditable(false); 

     JTextArea user = new JTextArea("myuser"); 
     user.setEditable(true); 

     leftPanel.add(userField); 
     centerPanel.add(user); 

     frame.getContentPane().add(leftPanel); 
     frame.getContentPane().add(centerPanel); 
     frame.setVisible(true); 
     frame.setSize(500, 500); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
} 

我想基本上就像在左側字段及其值的表窗口正確的。如何才能做到這一點?

我當前的輸出只是我的窗口中心的myuser

+2

您是否嘗試過設置contentPane的佈局?你可以將其設置爲BorderLayout,然後執行如下操作:'frame.getContentPane()。add(leftPanel,BorderLayout.WEST);' –

回答

2

你不需要兩個面板。只要一有網格佈局是不夠的:

public static void main(String [] args) { 
     JFrame frame = new JFrame("My Frame"); 
      JPanel panel = new JPanel(new GridLayout(1,2)); // split the panel in 1 rows and 2 cols 


      JTextArea userField = new JTextArea("User:"); 
      userField.setEditable(false); 

      JTextArea user = new JTextArea("myuser"); 
      user.setEditable(true); 

      panel.add(userField); 
      panel.add(user); 

      frame.getContentPane().add(panel); 

      frame.setVisible(true); 
      frame.setSize(500, 500); 
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    }