用Swing的童鞋都知道,JTable在單擊某一列的首部時只能達成排序的效果,而不能以此選擇整列的內容。而用慣Excel表格的童鞋是否希望JTable能按列選擇呢?下面就做一個可以按列選擇的JTable。
要向JTable中添加按列選擇功能,很簡單,只需完成下面兩個工作即可:
- 修改選擇方式。
- 添加一個鼠標監聽事件MouseListener。
先看看代碼:
只實現了JTable 中常用的構造方法,其他類推。JTable默認的是按行選擇,我們用17、19行代碼實現按列選擇並屏蔽按行選擇。接下來就是要捕獲對首部的鼠標單擊事件。JTableHeader不含addActionListener()方法,只能爲其添加一個MouseLinstener監聽器了並重寫它的mouseReleased()方法。
25行判斷Shift鍵是否被按下,按下則是希望多選,把這一列添加到已選內容中;若未按下,則取消所有選擇,重新選。27行獲得當前單擊的是哪一列。28行獲得當前列搞定。
測試類如下:
效果如圖所示: