ComponentListener有问题。我用它来检查某个组件是否被调整了大小,如果是的话,还可以更新一些东西。
代码看起来是这样的,尽管这可能对您不太有用:
@Override
public void componentResized(ComponentEvent e) {
// Graph resized, reposition slice nodes
Component c = e.getComponent();
if (graphHeight > 0) {
if (c == graph) {
int offset = (c.getHeight() - graphHeight) / 2;
if (offset != 0) {
try {
controller.shiftSlice1NodesY(offset);
} catch (GraphIntegrityException e1) {
logger.error(e1.getMessage(), e1);
}
graphHeight = c.getHeight();
}
}
} else {
graphHeight = c.getHeight();
}
}
对于我的代码的一部分,我需要禁用这个监听器。看起来是这样的:
graph.removeComponentListener(this);
controller.parseFile(filename);
graph.addComponentListener(this);
一切都很顺利,直到我再次添加组件侦听器。此时,组件化方法被调用大约20次。它可能缓冲了我所看到的调整大小事件。有人知道这是怎么回事吗?