当我调用新的JFrame()时,没有任何事情发生

时间:2015-07-26 16:45:05

标签: java swing jframe

这是我的代码:

Main component = new Main();
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setPreferredSize(screenSize);
frame.getContentPane().add(component);
frame.pack();
frame.setResizable(false);
frame.setVisible(true);
component.start();

当我运行时,没有任何事情发生,所以我把system.out放在每一行,我得出结论它停在了线上:

JFrame frame= new JFrame();

我对发生的事情感到很困惑,因为我在很多时候运行过这个完全相同的代码集,但最近才开始给我带来麻烦。

另外需要注意的是,运行此程序时我没有收到任何错误消息,它只会运行并卡在该行,然后五秒钟后才关闭程序。

我不认为这是我的代码的问题,因为我之前已经多次使用过这段精确的代码。

我已经用java 7和8运行了这个程序,所以也许这是一个计算机问题,所以如果你有 任何 的想法,请告诉我!

[编辑]

以下是重现问题所需的最少代码

    public static void main(String args[]){
        JFrame frame = new JFrame();        
    }

这是您的证明:http://i.stack.imgur.com/pOEWf.png

enter image description here

1 个答案:

答案 0 :(得分:0)

你是说退出在第new JFrame行没有可见的堆栈跟踪吗?我建议你应用两种跟踪方法:

  1. 将您的代码包含在try - catch (Throwable)块中(仅用于调试目的),并打印出Throwable对象的堆栈跟踪。

  2. 更高级:如果你不能以前面的方式得到任何Throwable,可能会在代码的某个深层执行System.exit。如果是这样,我建议您对SecurityManager进行编程以防止它(参见Preventing System.exit() from API),并在代码中打印出当前的堆栈跟踪,至少知道这个奇怪的System.exit来自何处。