java - 如何在 validateTree 期间获得正确的可见矩形?

标签 java swing layout scroll

先描述一下问题: 在由于宽度或高度的变化而重新布局期间,Java 的 ScrollPaneLayout 在设置其视口(viewport)边界之前请求其子级的 preferredSize。在 Text-Components 上调用 getPreferredSpan 可以更改布局,因为此 getPreferredSpan 在内部调用 setSize。结果是,在这种情况下,没有 View (扩展 javax.swing.text.View)可以确定地检索其父组件的实际大小。 getVisibleRect 在这种情况下将失败,因为尚未设置视口(viewport)的边界。检查文本组件的有效性以阻止布局过程不是一个选项,因为它在这种情况下已经有效。

因此,问题是:是否有可能查明 JComponent 的边界是否是最新的?

最佳答案

也许您可以子类化 ScrollPanel 并在无效时将自定义属性(如“com.mycompany.BoundsSet”)设置为 false,并在设置边界时将其设置为 true。然后 View 可以检查此属性,如果它为 false,则重新验证 ScrollPanel,并返回最后知道的首选大小。希望 ScrollPane 将继续并设置它的边界,然后重新验证事件将通过管道进行,并且标志将被清除,让您信任 getBounds()。或者类似的东西。

关于java - 如何在 validateTree 期间获得正确的可见矩形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1292802/

相关文章:

Android 表格布局和按钮调整大小

java - 如何使用带 Struts 2 的 Hibernate 按任何列值删除记录

java - SSl 握手异常时出现错误证书错误

java - JTextArea 滚动功能

java - 运行线程时,旋转变换无法在重新绘制中正常工作

java - 带有 ADT 插件的 Eclipse - 布局编辑器不显示内容(卡在 "Loading editor"上)

java - Android:Notification.DEFAULT_VIBRATE 是否需要振动许可?

java - Java hashtablelload Factor == 1 是什么意思?

java - 如何通过 JFrame 传递事件?

ios - UICollectionView 项目垂直流动并水平滚动