2010-09-26 68 views
3

当鼠标光标离开表格的边界时,我将鼠标侦听器连接到JTable来调用某些东西。但是,mouseExited()方法在鼠标光标离开表格的单个单元格时也会调用。我的代码中有一些奇怪的怪癖还是Swing中的一个错误?添加到JTable的MouseListener的奇怪行为

编辑:我没有提到我的表是一个JTable的子类,而不是一个标准的JTable

+3

工作正常,我有一个标准的JTable。可能与你的班级有关。请张贴一些代码。 – lins314159 2010-09-27 00:35:21

+0

适用于我...请发布一些代码 – Favonius 2010-09-27 07:39:11

回答

0

添加鼠标监听器PL & F-重的部件是不是一个好主意。他们经常有分会破坏派对。鼠标事件与其他事件不同之处在于,它们在组件层次结构中冒泡,直到它们用鼠标侦听器击中组件(因此添加鼠标侦听器是一种侵入式操作)。 JTable特别使用渲染器来标记每个单元以及编辑器组件。

(也子compnents如JTable,或其他类如Thread,通常是一个坏主意。)

+0

如果鼠标侦听器不使用它,鼠标事件可以继续传播。还有你为什么不建议扩展'JTable'的具体原因?我可以理解为什么不是'Thread',而是'JTable'有很多东西被遗漏(例如搜索,层次结构)。您可以通过扩展表模型,列模型,标题等来添加许多功能,但是我遇到了必须扩展JTable本身的情况。 – 2010-09-28 03:47:59

+0

监听器不必调用'consume()'来防止事件冒泡。只有听众的存在才能做到。 – 2010-09-28 11:22:09

1

正常的声音对我来说,如果你不检查event.getSource() == myTable