2013-07-01 64 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允许您向布局添加扩展间隙(“胶水”)。