Java JTable 如何让表格单击单元格后就进入编辑状态
默认下新建的JTable单击单元格后不进如编辑状态虽然单击后输入(英文或数字)后会进入编辑状态但是打开输入法输入则无效所以我想知道怎样才能使单元格单击后就进入编辑状态即单...
默认下新建的JTable单击单元格后不进如编辑状态 虽然单击后输入(英文或数字)后会进入编辑状态 但是打开输入法输入则无效
所以我想知道怎样才能使单元格单击后就进入编辑状态 即单元格获得光标(焦点)?
zoulixing1984 你的方法最好 但是进入编辑状态后并没有获得光标 请问如何解决 展开
所以我想知道怎样才能使单元格单击后就进入编辑状态 即单元格获得光标(焦点)?
zoulixing1984 你的方法最好 但是进入编辑状态后并没有获得光标 请问如何解决 展开
4个回答
展开全部
这个简单:如果按楼上的人的方法,会害死你不可,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,加我说明是那个问题
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,加我说明是那个问题
展开全部
需要重写JTable 的 isCellEditable 方法。
如下,继承JTable,使指写的行列,在isCellEditable方法中返回是false即可使之不可编辑。
Class MyTable extends JTable{
public boolean isCellEditable(int row,int col){
}
}
具体逻辑有些麻烦。需要做出一个二维数组来记录。
如下,继承JTable,使指写的行列,在isCellEditable方法中返回是false即可使之不可编辑。
Class MyTable extends JTable{
public boolean isCellEditable(int row,int col){
}
}
具体逻辑有些麻烦。需要做出一个二维数组来记录。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有个问题
现在情况是: 比如当前编辑的单元格位(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)进入编辑状态
现在情况是: 比如当前编辑的单元格位(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)进入编辑状态
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有单击事件和双击事件
在着两个时间中写方法就可以实现你说的功能
具体怎么操作看JAVA相关文档
在着两个时间中写方法就可以实现你说的功能
具体怎么操作看JAVA相关文档
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询