2013-07-01 17 views
1

我試圖完成這一佈局完成一定的佈局:http://www.domizai.ch/tmp/targetLayout.jpg如何在Java中

但我現在得到的是:http://www.domizai.ch/tmp/layoutNow.jpg

我只是想是Panel2在中心的y對齊而不是將其拉伸到panel1的高度。

我的代碼看起來是這樣的現在:

JPanel panel1 = new JPanel(); 
panel1.add(new JLabel(icon,JLabel.CENTER)); 
panel1.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 20)); 

JPanel panel2 = new JPanel(); 
panel2.setLayout(new BorderLayout()); 
panel2.add(new JLabel("Copy files to Desktop..."),BorderLayout.NORTH); 
panel2.add(bar,BorderLayout.CENTER); 
panel2.add(label = new JLabel("1 minute remaining");,BorderLayout.SOUTH); 

JPanel panel3 = new JPanel(); 
panel3.setLayout(new BorderLayout()); 
panel3.add(panel1,BorderLayout.WEST); 
panel3.add(panel2,BorderLayout.EAST); 

JPanel panel4 = new JPanel(); 
panel4.setLayout(new BorderLayout()); 
panel4.add(new JLabel(),BorderLayout.LINE_START); 
panel4.add(button,BorderLayout.LINE_END); 
panel4.setBorder(BorderFactory.createEmptyBorder(10,0, 0, 0)); 

JPanel panel5 = new JPanel(); 
panel5.setLayout(new BorderLayout()); 
panel5.add(panel3, BorderLayout.PAGE_START); 
panel5.add(panel4, BorderLayout.PAGE_END); 
panel5.setBorder(BorderFactory.createEmptyBorder(20,20, 10, 20)); // top, left bottom, right 

frame.setContentPane(panel5); 

什麼是最好的方法是什麼? Thx!

回答

0

你可以試試這個:

  • 內容窗格是有BorderLayout。它包含:
    • 帶有圖標的標籤在WEST
    • 在CENTER(或EAST)的面板。該小組有一個GridLayout 1列和5行。面板上包含:
      • 空面板
      • 的「將文件複製到桌面」
      • 進度欄的標籤
      • 的「1分鐘耳提面命」
      • 空面板標籤
+0

** @ johnchen902 **:thx爲提示。這相當乾淨! ** @ Jacob Raihle **:感謝您向我介紹MigLayout。我會看一看!但是對於這個例子,我認爲BorderLayout和GridBagLayout的結合很好 – domizai

0

爲了您自己的理智,我建議您看看不同的layo ut經理 - MigLayout很不錯。您也可以嘗試使用標準的BoxLayout管理器,IIRC允許您向佈局添加擴展間隙(「膠水」)。