Swing应用程序无法在macOS上运行

时间:2019-12-04 23:28:41

标签: java swing

我的应用程序在Windows机器上可以正常运行,但是切换到macOS时,每次运行该程序时,都会得到一个null ptr异常。甚至没有到达构造函数代码,所以我不确定为什么会这样。堆栈跟踪将我指向JFrame字段的初始化。我不确定这是Swing的特质还是我的代码有问题。我的主要:

public static void main(final String[] theArgs) {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                new TetrisGUI();
            }
        });
    }

跟踪

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at java.desktop/java.awt.Window.init(Window.java:509)
    at java.desktop/java.awt.Window.<init>(Window.java:549)
    at java.desktop/java.awt.Frame.<init>(Frame.java:423)
    at java.desktop/javax.swing.JFrame.<init>(JFrame.java:224)
    at view.TetrisGUI.<init>(TetrisGUI.java:70)
    at view.TetrisMain$1.run(TetrisMain.java:27)

TetrisGUI

public class TetrisGUI implements Observer {

    .
    .
    .

70  /** The main GUI component that encapsulates all subsidiary components. */
    private final JFrame myMainFrame = new JFrame("UW CSS 305 - Tetris");

    .
    .
    .

    /**
     * Initializes GUI components, begins game. 
     */
    public TetrisGUI() {
        myMainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        myMainFrame.setPreferredSize(getPreferredDim());
        myMainFrame.setResizable(false);

        myUserBoard = new Board();
        myUserBoard.addObserver(this);
        myAutoStepTimer = new Timer(500, event -> {
            myUserBoard.step();
        });

        myMainFrame.add(buildControlPanel(), BorderLayout.CENTER);
        myMainFrame.add(myGraphicPanel, BorderLayout.EAST);

        addKeyListeners();
        myMainFrame.pack();
        myMainFrame.setVisible(true);
    }

更新: 经过更多的挖掘后,我发现此问题是由于我的外接显示器引起的。我发现此Github issue与问题有关。似乎是Swing的问题。

0 个答案:

没有答案