java - 为什么我的 JFrame 在 Mac 上启动时随机收缩?

标签 java macos swing resize

在我的 mac 笔记本电脑上工作时,我最近注意到程序启动时我的框架有时会缩小。它确实缩小了大约 70-90%。

它在 PC 上按预期工作,但在我试过的任何 Mac 上都不行。我试图将它缩小一点(到下面的代码)但是从这里我找不到它不起作用的任何原因。我的一些 friend 认为这可能与mac自带的窗口管理器有关。我不知道。

我对此很陌生,仅供引用。

public class Worms extends JFrame{

    public static void main(String[] args) {
        new Worms();
    }

    private JButton startGame;
    public Worms(){
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();

        Container contentPane = this.getContentPane();
        //if i change it so it uses a new dimension not "screenSize" it works
        contentPane.setPreferredSize(screenSize);


        JPanel menu = new JPanel();

        startGame = new JButton("Start Game"); 
        menu.add(startGame);//or if i remove this button it also works
        this.add(menu);


        this.pack();
        this.setVisible(true);
    }
}

它以“全屏”开始,然后缩小到左角。如果我将它拖回到正常大小,它就会正常工作。

最佳答案

Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();

Container contentPane = this.getContentPane();
//if i change it so it uses a new dimension not "screenSize" it works
contentPane.setPreferredSize(screenSize);

内容 Pane 不应将首选大小设置为屏幕大小。这太大了,并且不考虑框架装饰或“ Chrome ”。

这是一种不同的方法,应该可以跨系统可靠地工作。它设置框架的扩展状态。

import java.awt.*;
import javax.swing.*;

public class Worms extends JFrame{

    public static void main(String[] args) {
        new Worms();
    }

    private JButton startGame;
    public Worms(){
        JPanel menu = new JPanel();

        startGame = new JButton("Start Game"); 
        menu.add(startGame);
        this.add(menu);

        this.pack();
        // this should do what you seen to want
        this.setExtendedState(JFrame.MAXIMIZED_BOTH);
        // this is just polite..
        this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        this.setVisible(true);
    }
}

请注意,应在事件调度线程上创建和更新 Swing/AWT GUI。为了简单起见,上面的示例没有添加。

关于java - 为什么我的 JFrame 在 Mac 上启动时随机收缩?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55513677/

相关文章:

java - 添加鼠标监听器后进程不会关闭

java - 在junit中执行测试套件的命令

Java 使用 JDialog block 主程序

macos - NPM 安装失败

macos - NSUserDefaults 是否安全地处理自动终止?

java初学者计算器不编译

java - 使用 DOM 解析器将 XML 文档中的树节点填充到 JTree 中

java - 如何在 jframe 上使用 Imageicon 打开图像

Java:尝试使用外部 .jar 库时 Eclipse 中出现 NoClassDefFoundError

cocoa - 如何使用 NSWindowDidExposeNotification