爪哇 - 秋千/ AWT的ComponentListener意外的行为

得了具有的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);

一切顺利,直到我再次添加组件监听。 在这一点上的componentResized方法被称为20倍左右。 它可能是缓冲从我所看到的调整大小事件。 任何人都知道是怎么回事吗?

--------------解决方案-------------

看起来,你是想修改组件关闭事件指派线程(EDT)。 这甚至不是在AWT是一个好主意,更不用说摇摆。

除了获得正确的线程上的所有AWT / Swing的东西,修复的一部分,应该是让听者检查状态,看它是否应该执行它的身体,而不是试图删除和添加监听器。

分类:java的 时间:2012-09-17 人气:0
本文关键词: 爪哇,秋千,AWT
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.349 (s). 10 q(s)