我正在开发一个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()调用,希望这会有所帮助。实际上它确实存在,但问题仍然时有发生。
提前感谢您的帮助!
答案 0 :(得分:4)
基本规则如下:
确认event dispatch thread上构建了所有 GUI元素。
确认吞下了 no 例外情况,尤其是在event dispatch thread上。
请注意,抛出异常后,EDT将自动重启。根据具体情况,应用程序可能会冻结。虽然您应在控制台上看到某些内容,但文章Uncaught Exception Handlers可能会提供一些见解。