java - 如何用Java实现一定的布局

标签 java layout progress-bar jpanel boxlayout

我正在尝试完成此布局:http://www.domizai.ch/tmp/targetLayout.jpg

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

我只是想让 panel2 在中心 y 方向对齐,而不是将其拉伸(stretch)到 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);

最好的办法是什么? 谢谢!

最佳答案

你可以试试这个:

  • 内容 Pane 具有 BorderLayout。它包含了:
    • 带有 WEST 图标的标签
    • 位于中心(或东)的面板。该面板有一个 1 列 5 行的 GridLayout。该面板包含:
      • 空面板
      • “将文件复制到桌面”标签
      • 进度条
      • “还剩1分钟”的标签
      • 空面板

关于java - 如何用Java实现一定的布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17405808/

相关文章:

Delphi:在 ListView 中绘制自己的进度条

.net - Windows 窗体中是否有免费提供的类似 "Spinning Wheel"的控件?

java - 无法反序列化 Wiremock Json 文件配置中收到的 START_ARRAY token 异常中的 `java.lang.String` 实例

java - 需要包含 <my reference> 的封闭实例

java - Spring TCP Socket 客户端未从大型机接收数据

css - 页面加载时将 div 设置为 100% View 端口大小

layout - Qt formlayout 不垂直扩展 qplaintextedit

java - Hibernate注解

JavaFX VBox 调整大小

javascript - 如何在 jQuery.get() 中有一个进度条