我目前正在修复(相当旧的)应用程序中的错误:
它涉及一个具有延迟加载功能并且具有快速搜索文本字段的树。假设以下情形:
步骤1到4工作得很好,但是第五步只有在树不需要延迟加载元素但是之前已经加载了树时才有效。
经过一段时间的调试后,我认为这是因为计算出滚动量的代码使用了代表树节点的AWT元素的维度。但是如果元素是延迟加载的,则不计算维度,因此代码无效。我想维度计算将在重绘方法期间发生。或者无论如何:太晚了。
如何让AWT立即计算元件尺寸?
代码在AWT之上使用Thinlet。
答案 0 :(得分:0)
看起来你的问题更多的是在Thinlet方面,而不是在AWT方面。它看起来像是Thinlet中的一个错误。 Thinlet确实尝试在进行实际滚动之前布局要滚动的节点,但这对于节点没有正确实现。
使用以下修补程序让瘦身在您的情况下正常工作:
--- Thinlet.java 2005-03-28 18:15:28.000000000 +0200
+++ Thinlet_new.java 2013-02-06 16:06:23.707530066 +0100
@@ -166,6 +166,10 @@
private void doLayout(Object component) {
String classname = getClass(component);
+ while ("node" == classname) {
+ component = getParent(component);
+ classname = getClass(component);
+ }
if ("combobox" == classname) {
if (getBoolean(component, "editable", true)) {
Image icon = getIcon(component, "icon", null);