Java setPreferredSize()失败

时间:2018-11-06 09:48:43

标签: java jframe

这是我使用Java的第一次尝试,因此请放轻松。 我查看了其他JFrame个问题,但我根本无法找到可行的解决方案。

由于某些原因,我无法让setPreferredSizesetSize工作。

窗口将继续默认为其他大小。 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();
            }
        });
    }

*更新*

哇好吧...我是个白痴!!!调整大小不起作用的原因是因为大小是在另一个称为“文件”的外部设置的。谢谢大家的帮助。我已经标记了正确的答案。

2 个答案:

答案 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个。

然后,先设置尺寸,然后绘制到屏幕上。

希望这会有所帮助。