滚动 JScrollPane 时出现问题 - 线程

发布于 2024-09-16 00:15:36 字数 375 浏览 8 评论 0原文

情况是这样的:

点击菜单项时,一些组件被添加到 JScrollPane 中,调整组件的大小,然后调用 JScrollPane 的 setVisible 方法。组件大小的调整超出了我的控制范围。 (TextAreas 根据其内容调整大小。插入符更新被禁用。)

我想将 JScrollPane 滚动到底部。使用 invokeLater 和通过使用 getMaximumValue 方法向下滚动列表的 Runnable 在这种情况下似乎不起作用(而通常对于其他程序的一部分)。

有没有办法让 Runnable 线程在确保与上述操作相关的所有事情都完成后得到通知?

提前致谢。

The situation is like this:

Upon clicking on a menu item, some components are added to a JScrollPane, the components are resized, then setVisible method of JScrollPane is called. Resizing of components are out of my control. (TextAreas getting resized according to their contents. Caret updates are disabled.)

I want to scroll the JScrollPane to the bottom. Using invokeLater and a Runnable that scrolls the list down by using getMaximumValue method does not seem to work in this case (while it normally does for other parts of the program).

Is there a way to make the Runnable thread get notified after making sure that everything related to the operations above are done?

Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

滥情哥ㄟ 2024-09-23 00:15:36

为什么要使用另一个线程来做到这一点?您可以使用

JViewPort view = new JViewPort();
view.setPoint(new Point(0, heightOfContents));
scrollPane.setViewPort(view);

That 或类似的东西来满足您的需要吗?

Why are you doing that with another Thread? Could you instead use

JViewPort view = new JViewPort();
view.setPoint(new Point(0, heightOfContents));
scrollPane.setViewPort(view);

That, or something similar should do what you need.

想挽留 2024-09-23 00:15:36

您可以尝试创建新线程并在该线程上调用虚拟 invokeAndWait 。之后,所有待处理的事件都应该完成,并且您的滚动代码应该可以工作。

You colud try to create new thread and call dummy invokeAndWait on that thread. After that, all pending events should be finished and your scroll code should work.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文