Java JTable 如何让表格单击单元格后就进入编辑状态

2024-12-29 05:10:23
推荐回答(4个)
回答1:

这个简单:如果按楼上的人的方法,会害死你不可,2楼的绝对不行,我刚开始也这样,现在想想,真的要看JAVA的原代码了

jTable1 = new javax.swing.JTable(){
public void changeSelection(int rowIndex, int columnIndex,
boolean toggle, boolean extend){
super.changeSelection(rowIndex, columnIndex, toggle, extend);
super.editCellAt(rowIndex, columnIndex, null);
}
};

这样后jTable1 对象只要单击就进入编辑状态;
因为JTable每次都会自动的调用changeSelection方法,不需要你判断是否有焦点

你肯定还会遇到,JTable没把焦点取消,单元格的数据无法保存,
if(jTable.isEditing()){
jTable.getCellEditor().stopCellEditing();
}

----------补充-------

不是可以输中文了吗?具体有没有光标很重要吗?

我的QQ:7706189,加我说明是那个问题

回答2:

需要重写JTable 的 isCellEditable 方法。

如下,继承JTable,使指写的行列,在isCellEditable方法中返回是false即可使之不可编辑。
Class MyTable extends JTable{
public boolean isCellEditable(int row,int col){
}
}
具体逻辑有些麻烦。需要做出一个二维数组来记录。

回答3:

有个问题
现在情况是: 比如当前编辑的单元格位(row, col)
当单元格编辑结束(按回车),要对数据作检查,检查不通过,会出dialog,然后要求进入到下一个单元格(row, col + 1)进入编辑状态

现在代码如下,是在对单元格(row,col)作了事件监听,然后出了dialog:
showDialog();
table.requestFocus();
table.editCellAt(row, col+1); //(*)
table.changeSelection(row, col+1, true, true); //(**)

现象是,不论*,或**行次序变化,屏幕出了dialog后,table的单元格(row, col)进入编辑状态,而不是(row, col+1)进入编辑状态

回答4:

有单击事件和双击事件
在着两个时间中写方法就可以实现你说的功能

具体怎么操作看JAVA相关文档