Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 空白弹出菜单和组合框_Java_Multithreading_Swing - Fatal编程技术网

Java 空白弹出菜单和组合框

Java 空白弹出菜单和组合框,java,multithreading,swing,Java,Multithreading,Swing,我发现JPOpupMenus和JComboBox出现了一个非常奇怪的问题。当应用程序处于重载状态时,有时我们的弹出菜单会显示正确的大小和位置,但就像空白的灰色框一样 另一个我们认为相关的问题是,有时,我们会看到stanards JComboBox的出现,就好像它们没有任何项目(即,它们没有下拉)。我们在应用程序未加载时看到了这个问题。他们没有进行数据库调用或类似的操作来填充组合框项,而是使用硬编码项 我已经在SwingUtils.invokelater调用中创建了弹出菜单,这很有帮助,但并没有使

我发现JPOpupMenus和JComboBox出现了一个非常奇怪的问题。当应用程序处于重载状态时,有时我们的弹出菜单会显示正确的大小和位置,但就像空白的灰色框一样

另一个我们认为相关的问题是,有时,我们会看到stanards JComboBox的出现,就好像它们没有任何项目(即,它们没有下拉)。我们在应用程序未加载时看到了这个问题。他们没有进行数据库调用或类似的操作来填充组合框项,而是使用硬编码项

我已经在SwingUtils.invokelater调用中创建了弹出菜单,这很有帮助,但并没有使问题完全消失。我不知道该怎么做才能改变组合框的行为。如果我们再次右键单击,关联菜单将重新出现-完全填充。为了使组合框再次正常工作,我们只需关闭包含它们的对话框,然后重新打开它

我们在标准桌面应用程序中使用Java1.6.17。是否有一个我不知道的bug,或者其他可以解决它的东西,或者至少可以帮助我们了解可能发生的其他情况?

所有GUI组件都应该构建”,“并且必须正确同步对其他线程拥有的任何数据的访问。下面有一个很好的摘要

增编:@Boro提出了与这个问题相关的两个引人注目的观点

我从未经历过这样的问题,我希望看到一个

问题的间歇性只表明同步不正确,但相反的证据是不正确的。受影响的系统可能太大,无法通过检查进行纠正;可悲的是,这一计划是人为的,显然是不正确的

代码中可能还有其他内容,因为
invokeLater()
没有完全帮助


一种常见的场景是延迟构造的
ListModel
,可能是在另一个线程上。一种方法是记录
事件队列
,并根据建议查找异常情况。

Hi。听起来是个很有趣的问题。你可以发布一个SSCCE来展示这个问题吗。我想看看在什么情况下会发生这种行为。我从来没有遇到过这种问题,我很想看到它们。@trashgood+1评论不错,链接很有趣。我认为这至少是问题的一个重要部分。另一方面,代码中可能还有其他内容,因为invokeLater没有提供完全的帮助?是的,非常好的注释。我希望我能提供一个sscce。如果可以的话,我就在解决问题的中途了!如果有帮助,上下文菜单问题可以在JTree的自定义弹出菜单中看到。在EDT上未“创建并显示”的对话框中,至少会出现一个组合框问题。我正在寻找其他类似的例子,我认为这是可以解决的。确实是上下文菜单让我困惑不解。事实上,
JTree
是EDT更敏感的组件之一。也可以考虑,如果你不需要一个明确的代码> MouseListener < /代码>别人叹息。好的,所以我没有完全解决它,但是在EDT中加入弹出调用后效果更好(我没有尝试setComponentPopupMenu)。我们只是走得太远了,无法对代码进行任何重大更改。经验教训:在你把所有东西都整合在一起之前,一定要有一个好的软件架构师和架构。谢谢你的帮助和建议@多皮亚:消瘦。未来可能会有用。