Java swing JMenuBar有时候不会显示出来

我正在开发一个Java桌面应用程序,有时我的jmenubar会显示出来,有时则不会。 当它没有整个程序冻结,我必须杀死它。

我正在创建它并在框架的构造函数中设置它。

代码:

// Load any settings we might have made from last time. loadSettings(); menuBar = createMenuBar(); setJMenuBar(menuBar); // re-evaluate and re-layout things, since they've been changed. validate(); addWindowListener(this); 

正如您在我的代码中看到的,我添加了一个validate()调用,希望这会有所帮助。 实际上它确实如此,但问题仍然时有发生。

在此先感谢您的帮助!

基本规则如下:

  1. validation是否在事件派发线程上构造了所有 GUI元素。

  2. validation是否没有吞下exception,尤其是在事件派发线程上 。

请注意,抛出exception后,EDT将自动重启。 根据具体情况,应用程序可能会冻结。 虽然您应该在控制台上看到一些内容,但文章Uncaught Exception Handlers可能会提供一些见解。