gpt4 book ai didi

java - 空白弹出菜单和组合框

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:26:04 26 4
gpt4 key购买 nike

我看到 JPopupMenu 和 JComboBox 的一个非常奇怪的问题。当应用程序负载很重时,有时我们的弹出菜单会以正确的大小和位置出现,但只是空白的灰色框。

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

我已将弹出菜单创建放在 SwingUtils.invokelater 调用中,这有所帮助,但并没有使问题完全消失。我不知道如何更改组合框的行为。如果我们再次右键单击,上下文菜单将重新出现 - 完全填充。要使组合框再次正常工作,我们只需关闭包含它们的对话框,然后再将其重新打开。

我们在标准桌面应用程序中使用 Java 1.6.17。是否存在我不知道的错误,或者可以解决它的其他问题,或者至少帮助我们了解可能发生的其他问题?

最佳答案

所有 GUI 组件都应构造为“on the event dispatch thread”,并且必须正确同步对另一个线程拥有的任何数据的访问。 Memory Consistency Properties 下有一个很好的总结.

附录:@Boro 提出了与此问题相关的两个引人注目的观点。

I have never experienced this kind of issue, and I would like to see one.

问题的间歇性仅暗示不正确的同步,但相反的证据是difficult .受影响的系统可能太大而无法通过检查来纠正;可悲的是,一个sscce将是人为的并且显然是不正确的。

There might be something else in the code as well, since invokeLater() didn't help completely.

一个常见的场景是延迟构造的 ListModel,可能在另一个线程上构造。一种方法是记录 EventQueue 并查找异常,如建议的那样 here .

关于java - 空白弹出菜单和组合框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5707557/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com