2011-05-12 45 views
2

我有一個JTable行選擇啓用。在今天之前,我所需的功能是雙擊任何給定的行來打開一個新窗口。在今天之前,這工作得很好。如何僅爲JTable的一部分禁用雙擊?

我剛剛在表中添加了一列JCheckBox es。一般來說,在新列中選擇和取消選中單個複選框效果不錯。但是,如果我選中一個複選框並快速取消選擇,表格會將我的操作解釋爲雙擊複選框的行,這不是我想要的。

是否有一種方法可以僅爲複選框禁用雙擊行爲,但是否保持行選擇被啓用?如果沒有,那麼如何禁用表格的一列的行爲?如果是這樣,怎麼樣?

+0

如果它是一個選項:如果下面的單元格是可編輯的,並且有一個cellEditor with startOnSingleClick,則根本不打開窗口 – kleopatra 2011-05-12 15:07:17

+0

@kleopatra,hm,我不熟悉'CellEditor'。有時間做一些Google搜索。謝謝你的提示! – Pops 2011-05-12 15:11:02

回答

5

如果不是,那麼如何禁用表中的一列的行爲?

使用table.columnAtPoint(...)方法忽略在複選框上的雙擊columm。

3

MouseListener中,您可以檢查每次點擊所選行的複選框的狀態,並且如果第二次點擊的狀態與第一次點擊的狀態不匹配,則不要打開新窗口。

+0

這看起來像是一個很好的解決方案,適用於我的特定情況。儘管有關更一般情況的任何想法?下一次出現時,它可能是一個下拉列表或一個按鈕或其他非複選框組件。 – Pops 2011-05-12 15:02:21

+0

@LordTor,我認爲camickr的答案更適合更一般的情況。 – jzd 2011-05-12 15:15:29

+0

事實上,他在我發表評論後立即發佈了這個消息。 FWIW我贊成你們兩個。不過,我想我最終會實現這一點。 – Pops 2011-05-12 15:28:17