如何在Java中完成某个布局



我正在努力完成这个布局:http://www.domizai.ch/tmp/targetLayout.jpg

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

我只是想让面板2在中心y对齐,而不是拉伸到面板1的高度。

我的代码现在看起来是这样的:

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!

你可以试试这个:

  • 内容窗格具有BorderLayout。它包含:
    • 图标位于WEST的标签
    • 位于中央(或东部)的面板。该面板具有一个GridLayout,其中包含1列和5行。面板包含:
      • 一个空面板
      • "将文件复制到桌面"的标签
      • 进度条
      • "1分钟重绑定"标签
      • 一个空面板

为了您自己的理智,我建议您考虑不同的布局管理器——MigLayout非常好。您也可以尝试使用标准的BoxLayout管理器,IIRC允许您在布局中添加扩展间隙("胶水")。

相关内容

  • 没有找到相关文章

最新更新