JTable选择行的用法

做表单时会用到JTable,

   如果选中行时,触发某个事件,的话

getSelectedRow()

removeRowSelectionInterval(int index0, int index1)

removeRowSelectionInterval(int index0, int index1)

两个的index一样时,是选中一行。

 

昨天特别郁闷,以为是index0,要比index1大呢  

调程序调半天也没调出来,真郁闷

 

 

 

### 实现Java Swing JTable锁定 为了在Java Swing `JTable` 中实现锁定的功能,可以采用自定义模型的方式。通过继承 `AbstractTableModel` 或者使用默认的 `DefaultTableModel` 并重写相应方法来控制特定的数据是否可被修改。 对于希望某些保持不变的情况,在创建表格时需指定哪些应该被锁住。这通常涉及到覆盖 `isCellEditable(int row, int col)` 方法[^2]: ```java public class LockedRowModel extends AbstractTableModel { private boolean[] lockedRows; // 表示各是否锁定的状态数组 private Object[][] data; private String[] columnNames; public LockedRowModel(Object[][] data, String[] columnNames, boolean[] lockedRows) { this.data = data; this.columnNames = columnNames; this.lockedRows = lockedRows; } @Override public int getRowCount() { return data.length; } @Override public int getColumnCount() { return columnNames.length; } @Override public Object getValueAt(int rowIndex, int columnIndex) { return data[rowIndex][columnIndex]; } @Override public void setValueAt(Object aValue, int rowIndex, int columnIndex) { if (!lockedRows[rowIndex]) { data[rowIndex][columnIndex] = aValue; fireTableCellUpdated(rowIndex, columnIndex); } else { System.out.println("This row is locked and cannot be edited."); } } @Override public boolean isCellEditable(int rowIndex, int columnIndex) { return !lockedRows[rowIndex]; } } ``` 上述代码展示了如何构建一个具有级锁定特性的表格模型。这里的关键在于维护了一个布尔类型的数组 `lockedRows` 来跟踪每一是否处于锁定状态。当调用 `setValueAt()` 和 `isCellEditable()` 方法时会检查对应的是否允许编辑操作[^3]。 另外需要注意的是,由于提到环境受限于Java 1.4版本,因此不能依赖更高版本引入的新特性如 `TableRowSorter` 。这意味着任何额外的需求(比如阻止排序)都需要自处理,例如可以在初始化阶段禁用所有表头点击事件以防止触发排序逻辑[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值