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

JTable 單元格編輯控制:精確到行、列的靈活配置

     編輯:Java 相關知識

重寫 DefaultTableModel.isCellEditable(int row, int column) 即可實現細粒度編輯控制。方法接收行列索引,返回 true 允許編輯,false 禁止。

基礎範例:整張表格不可編輯

DefaultTableModel model = new DefaultTableModel(data, columns) {
    @Override public boolean isCellEditable(int row, int column) { return false; }
};

進階場景

1. 僅允許第 3 列(索引 2)編輯

public boolean isCellEditable(int row, int column) {
    return column == 2; // 0-based 索引
}

2. 僅允許第 2 行第 2 列編輯

public boolean isCellEditable(int row, int column) {
    return row == 1 && column == 1;
}

3. 允許第 4 行與第 6 行編輯(所有列)

public boolean isCellEditable(int row, int column) {
    return row == 3 || row == 5;
}

4. 結合業務邏輯:庫存數量 > 0 才可編輯價格欄

public boolean isCellEditable(int row, int column) {
    if (column == PRICE_COL) {
        Object qtyObj = getValueAt(row, QTY_COL);
        return qtyObj instanceof Integer && (Integer) qtyObj > 0;
    }
    return false;
}

最佳實踐建議

  • 索引均為 0-based,勿與 UI 顯示行號混淆
  • 若使用自定義 TableModel,直接重寫 isCellEditable 而非匿名內部類
  • 複雜規則可提取為 CellEditableStrategy 介面,支援熱插拔
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved