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

时间:2019-04-04 10:29:34

标签: java macos swing resize

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

它可以在PC上正常运行,但在我尝试过的任何Mac上均无法运行。我试图缩小它的范围(下面的代码),但是从这里我找不到任何不起作用的原因。我的一些朋友认为这可能与Mac自己的窗口管理器有关。我不知道。

我只是FYI的新手。

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

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

1 个答案:

答案 0 :(得分:3)

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

内容窗格应将首选大小设置为屏幕大小。这太大了,无法说明框架装饰或“镀铬”。

这是一种应在整个系统之间可靠工作的不同方法。设置框架的扩展状态。

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。为了简单起见,上面的示例没有添加。