Java 空白弹出菜单和组合框
我发现JPOpupMenus和JComboBox出现了一个非常奇怪的问题。当应用程序处于重载状态时,有时我们的弹出菜单会显示正确的大小和位置,但就像空白的灰色框一样 另一个我们认为相关的问题是,有时,我们会看到stanards JComboBox的出现,就好像它们没有任何项目(即,它们没有下拉)。我们在应用程序未加载时看到了这个问题。他们没有进行数据库调用或类似的操作来填充组合框项,而是使用硬编码项 我已经在SwingUtils.invokelater调用中创建了弹出菜单,这很有帮助,但并没有使问题完全消失。我不知道该怎么做才能改变组合框的行为。如果我们再次右键单击,关联菜单将重新出现-完全填充。为了使组合框再次正常工作,我们只需关闭包含它们的对话框,然后重新打开它 我们在标准桌面应用程序中使用Java1.6.17。是否有一个我不知道的bug,或者其他可以解决它的东西,或者至少可以帮助我们了解可能发生的其他情况?所有GUI组件都应该构建”,“并且必须正确同步对其他线程拥有的任何数据的访问。下面有一个很好的摘要 增编:@Boro提出了与这个问题相关的两个引人注目的观点 我从未经历过这样的问题,我希望看到一个 问题的间歇性只表明同步不正确,但相反的证据是不正确的。受影响的系统可能太大,无法通过检查进行纠正;可悲的是,这一计划是人为的,显然是不正确的 代码中可能还有其他内容,因为Java 空白弹出菜单和组合框,java,multithreading,swing,Java,Multithreading,Swing,我发现JPOpupMenus和JComboBox出现了一个非常奇怪的问题。当应用程序处于重载状态时,有时我们的弹出菜单会显示正确的大小和位置,但就像空白的灰色框一样 另一个我们认为相关的问题是,有时,我们会看到stanards JComboBox的出现,就好像它们没有任何项目(即,它们没有下拉)。我们在应用程序未加载时看到了这个问题。他们没有进行数据库调用或类似的操作来填充组合框项,而是使用硬编码项 我已经在SwingUtils.invokelater调用中创建了弹出菜单,这很有帮助,但并没有使
invokeLater()
没有完全帮助
一种常见的场景是延迟构造的
ListModel
,可能是在另一个线程上。一种方法是记录事件队列
,并根据建议查找异常情况。Hi。听起来是个很有趣的问题。你可以发布一个SSCCE来展示这个问题吗。我想看看在什么情况下会发生这种行为。我从来没有遇到过这种问题,我很想看到它们。@trashgood+1评论不错,链接很有趣。我认为这至少是问题的一个重要部分。另一方面,代码中可能还有其他内容,因为invokeLater没有提供完全的帮助?是的,非常好的注释。我希望我能提供一个sscce。如果可以的话,我就在解决问题的中途了!如果有帮助,上下文菜单问题可以在JTree的自定义弹出菜单中看到。在EDT上未“创建并显示”的对话框中,至少会出现一个组合框问题。我正在寻找其他类似的例子,我认为这是可以解决的。确实是上下文菜单让我困惑不解。事实上,JTree
是EDT更敏感的组件之一。也可以考虑,如果你不需要一个明确的代码> MouseListener < /代码>别人叹息。好的,所以我没有完全解决它,但是在EDT中加入弹出调用后效果更好(我没有尝试setComponentPopupMenu)。我们只是走得太远了,无法对代码进行任何重大更改。经验教训:在你把所有东西都整合在一起之前,一定要有一个好的软件架构师和架构。谢谢你的帮助和建议@多皮亚:消瘦。未来可能会有用。