gpt4 book ai didi

java - Swing 中的组件具体什么时候实现的

转载 作者:行者123 更新时间:2023-11-30 04:32:56 26 4
gpt4 key购买 nike

我正在开发一个应用程序,其中所有 UI 组件都是通过 XML 文件定义的。我阅读了 xml 并根据它组成了 UI。用户进行一些更改后,会提供新的 XML,并且 UI 也会相应地刷新。现在我遇到了一些非常烦人的渲染问题,特别是在几个滚动区域中,其中 UI 的任何部分都被剪切(并且只有当我调整窗口大小时才可见),或者滚动条已经滚动到某个点,但它应该只是显示内容的顶部。

我认为这是一个事件调度线程问题,并在这里找到了一些非常有用的信息:http://www.javapractices.com/topic/TopicAction.do?Id=153

您可以在那里读到:“该线程(EDT)在组件实现后变为 Activity 状态:调用了 pack、show 或 setVisible(true)”

解析 XML 不是在 EDT 中完成的,也没有实例化组件并将它们添加到其父面板中。只有在创建所有组件之后,它们才会最终通过 EDT 添加到 MainPane。然而,在某些情况下,创建组件并将其添加到面板似乎已经启动了 EDT。所以事情变得一团糟。

是否有人详细了解哪些方法调用 pack、show 或 setVisible(true) 并因此启动 EDT?

非常感谢

最佳答案

我对滚动 Pane 也有同样的问题,请尝试在其上设置以下属性:

scrollpane.getViewport().setScrollMode(JViewport.SIMPLE_SCROLL_MODE);

如评论中所述,所有 Swing 组件都必须在 EDT 上创建,否则会发生奇怪的事情。

关于java - Swing 中的组件具体什么时候实现的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14192572/

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