Java setPreferredSize() 失败

Java setPreferredSize() fails

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

出于某种原因,我无法使 setPreferredSizesetSize 工作。

window 继续默认为不同的大小。 setMinimumSize 似乎工作得很好。 setMaximumSize 我的阅读似乎被窃听了。

最终我只是想将 window 设置为特定的不可更改的大小。

    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();
            }
        });
    }

* 更新 *

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

您正在调用 pack();,这会将框架打包成不同的大小,只需删除 pack(); 调用即可。

The pack method sizes the frame so that all its contents are at or above their preferred sizes. An alternative to pack is to establish a frame size explicitly by calling setSize or setBounds (which also sets the frame location).

如需更多曝光,请查看此 post What does .pack() do?

如果还是不行,你可以试试setSize()

    setPreferredSize(new Dimension(900, 600));
    setSize(new Dimension(900, 600));
    setMinimumSize(new Dimension(600, 300));

您在设置 window 的大小之前调用了 initComponents() 方法。

这样,您绘制了整个 window,然后设置了尺寸,导致您设置的尺寸被忽略。

我的建议是将 2 个 Dimension 对象传递给 initComponents 方法; 1 个用于 preferredSize,1 个用于 minimumSize

然后,先设置大小,然后绘制到屏幕上。

希望对您有所帮助。