2010-09-26 38 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