首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

JTable 取得滑鼠點擊位置的列號

     編輯:Java 程式設計入門

在 JTable 上註冊滑鼠監聽器,透過 MouseEvent.getPoint() 取得點擊座標,再呼叫 JTable.rowAtPoint(Point) 即可獲得該座標所在的列索引(0 起算)。

程式碼範例

JTable table = new JTable(cellData, columnNames);
table.addMouseListener(new MouseAdapter() {
    @Override
    public void mouseClicked(MouseEvent e) {
        System.out.println("mouseClicked()");
        System.out.println("總列數:" + table.getRowCount());
        
        Point pt = e.getPoint();
        int row = table.rowAtPoint(pt); // 回傳 0-based 索引,若點擊在列外則回傳 -1
        System.out.println("點擊列號(1-based):" + (row + 1));
    }
});

關鍵方法說明

方法回傳值說明
e.getPoint()Point滑鼠事件相對於元件左上角的座標 (x, y)
table.rowAtPoint(pt)int座標對應的列索引(0 起算),若不在任何列上則回傳 -1
table.getRowCount()int表格總列數(資料模型行數)

常見應用場景

  • 右鍵選單:在 mouseClicked 或 mousePressed 中判斷 e.isPopupTrigger(),對點擊列顯示操作選單。
  • 雙擊編輯:檢查 e.getClickCount() == 2 並取得列號後啟動編輯器。
  • 拖曳選取:搭配 DragGestureRecognizer 取得起始列。

注意事項

  1. rowAtPoint 回傳的是視圖索引(View index),若表格有排序或過濾,需轉換為模型索引:table.convertRowIndexToModel(viewRow)。
  2. 若在表頭點擊,rowAtPoint 回傳 -1,可改用 table.columnAtPoint(pt) 取得欄位。
  3. 建議使用 MouseAdapter 而非實作 MouseListener,僅覆寫需要的方法。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved