当前位置:编程学习 > JAVA >>

JTable 修改某行后, 行数据验证失败(如:主键冲突) , 禁止选取其它行


JTable 修改某行后, 行数据验证失败(如:主键冲突) , 禁止选取其它行, 弹出对话框提示用户有主键冲突,或某字段不能为空。取消对话框后,当前行仍选择, 除非按下ESC键,取消修改。 --------------------编程问答-------------------- 你要解决什么问题呢?
要锁定行不可编辑吗? --------------------编程问答-------------------- 编辑后,焦点离开此行时,我会验证主键有无冲突, 如果存在冲突,则焦点不可以失去,除非按下ESC键,放弃编辑 (如果是新增行,则删除;修改行,则复原数据)。

我这里说的焦点,不是指光标,是当前选定的单元格, 无论何时,表格中都有一个选定cell --------------------编程问答-------------------- 目的就是,某条件成立,禁止在表格中选择其它行,只可以在当前行选择不同的列,修正数据,修条件不成立时,则可以在表格中任意选择单元格了. --------------------编程问答-------------------- 有经验的程序员一看就知道, 就是表格中数据行的验证。 --------------------编程问答-------------------- 自定义主键那一列使用的 TableCellEditor

下面是 CellEditor 里面 stopCellEditing 方法的源码注释:


    /**
     * Tells the editor to stop editing and accept any partially edited
     * value as the value of the editor.  The editor returns false if
     * editing was not stopped; this is useful for editors that validate
     * and can not accept invalid entries.
     *
     * @return true if editing was stopped; false otherwise
     */
    public boolean stopCellEditing();
--------------------编程问答-------------------- 自己定义了 TableCellEditor 以后,设置到 JTable 的方法跟 TableCellRenderer 类似,可以按数据类型设置:

jtable.setDefaultEditor(Class<?>, TableCellEditor);

也可以给某列设置:

jtable.getColumnModel().getColumn(int).setCellEditor(TableCellEditor);
补充:Java ,  Java SE
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,