【发布时间】:2016-01-16 12:45:05
【问题描述】:
我正在尝试在 Java 上设计一个 GUI,但我遇到了一个问题,即 JFrame 的大小在不同的操作系统上显得不同。
您可以在下面看到 GUI 的外观:
在这里您可以看到它在 Linux 上的实际样子:
在这里你可以看到它在 Mac 上的样子:
图形用户界面的代码是这样的:
private void initialize() {
frmExample = new JFrame();
frmExample.getContentPane().setBackground(Color.BLUE);
frmExample.getContentPane().setLayout(null);
JPanel panel = new JPanel();
panel.setBackground(Color.RED);
panel.setBounds(0, 0, 400, 300);
frmExample.getContentPane().add(panel);
frmExample.setTitle("Example");
frmExample.setBounds(100, 100, 400, 272);
frmExample.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
我尝试将 frmExample.setBounds(100, 100, 400, 272) 更改为 frmExample.setBounds(100, 100, 400, 300) 以修复此示例项目的颜色,但如果我想在屏幕底部显示文本,则无法将其作为屏幕底部GUI 并不在所有操作系统上都相同。
是不是我做错了什么导致了这种情况,或者有办法解决它吗?
【问题讨论】:
-
尝试添加
frmExample.pack()@see the docs on usingpack() -
@EddieB 使用
pack()使整个窗口尽可能小(字面意思是1px 宽度)。我认为这是因为@camickr 回答的原因。 -
Camickr 在
pack()之前包含getPreferredSize(),这就是区别。 -
@crossboy007,我的理由解决了问题吗?