这是我使用Java的第一次尝试,因此请放轻松。
我查看了其他JFrame
个问题,但我根本无法找到可行的解决方案。
由于某些原因,我无法让setPreferredSize
或setSize
工作。
窗口将继续默认为其他大小。 setMinimumSize
似乎工作正常。 setMaximumSize
似乎是我阅读的内容。
最终,我只是试图将窗口设置为特定的不可更改大小。
public LauncherFrame(@NonNull Launcher launcher) {
super(tr("launcher.title", launcher.getVersion()));
this.launcher = launcher;
instancesModel = new InstanceTableModel(launcher.getInstances());
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
initComponents();
setPreferredSize(new Dimension(900, 600));
setMinimumSize(new Dimension(600, 300));
setResizable(false);
pack();
setLocationRelativeTo(null);
SwingHelper.setFrameIcon(this, Launcher.class, "icon.png");
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
loadInstances();
}
});
}
*更新*
哇好吧...我是个白痴!!!调整大小不起作用的原因是因为大小是在另一个称为“文件”的外部设置的。谢谢大家的帮助。我已经标记了正确的答案。
答案 0 :(得分:3)
您正在呼叫pack();
,它将把框架打包成其他尺寸,只需删除pack();
呼叫。
pack方法调整框架的大小,以便其所有内容位于或 超出其首选尺寸。打包的替代方法是建立一个 通过调用setSize或setBounds(也可以设置 框架位置)。
有关更多信息,请查看这篇帖子What does .pack() do?
如果仍然无法解决问题,您可以尝试使用setSize()
setPreferredSize(new Dimension(900, 600));
setSize(new Dimension(900, 600));
setMinimumSize(new Dimension(600, 300));
答案 1 :(得分:0)
在设置窗口大小之前,您正在调用initComponents()
方法。
这样,您将绘制整个窗口,然后再设置大小,从而导致忽略设置的大小。
我的建议是将2个 Dimension 对象传递给initComponents
方法; preferredSize
1个,minimumSize
1个。
然后,先设置尺寸,然后绘制到屏幕上。
希望这会有所帮助。