我有一个绑定的JTextField和一个由JComponent组成的独立图。当我在图形上拖动时,标记应该更新,绑定的JTextField应该在拖动时显示其坐标。绑定时,在完成拖动之前,图形不会重新绘制。当我关闭绑定时,我的图形会重新绘制为I拖动。我不明白为什么JGoodies在我拖动时屏蔽了我的重新绘制调用。有人知道为什么会发生这种事吗?
我的代码看起来像:
public void dragMarker()
{
...some code...
firePropertyChange("propertyName", oldValue, newValue);
myJComponent.refresh();
}
JGoodies发生了一些我无法理解的事情。它应该在绑定调用完成后重新绘制。
此外,我刚刚读到Swing可以将多个调用折叠为一个调用来重新绘制。这会发生在我身上吗?我的重新绘制调用在最后被折叠成一个调用?
我的答案是,我以0.3秒的速率启动一个带有调度执行器的swingworker线程,该线程运行firePropertyChangeListeners并更新JGoodies绑定的代码,但我对此并不完全满意。这意味着更新是断断续续的,但至少绘图代码几乎是完美平滑的。这个问题的出现使我感到不可思议。这是我能做的最好的…