转:JTable添加单元格改变事件
2012-12-02 23:57
344 查看
在使用Jtable得时候,当然是我自己在使用得时候,查了下API没有发现如何监听某个单元格得值是否被修改过了,如果那位仁兄知道怎么直接添加监听还望多多指教。
JTable得单元格(cell)在渲染得时候使用得是默认得DefaultTableCellRenderer。其返回的Component是继承了 JLabel得组件,所以直接使用默认得渲染器对其内容的更改显得力不从心。其监听主要在他得CellEditor上面JTable使用的默认得编辑器为 JTextField,这样你就可以重新添加编辑器即继承DefaultCellEditor然后给其添加一定得监听事件后在对jtable添加编辑器, 单这样做我感觉过于过于繁琐。在单元格进行编辑的时候会触发TablechangEvent 事件,Tablechange事件提供了几种触发事件得类型主要分为:
1.insert
2.update
3.delete
如果要对其某个单元格得内容是否真得发生了更改得话只有选择update类型,但其监听得事件是在你双击进入编辑状态后不管有没有对数据进行更改都会触发 此事件。如果我们能获得进入编辑状态前和编辑状态完成后得内容是很容易确定其内容是否真得进行过更改得。
首先对Jtable添加TableModelListener方法如下
JTable t = new JTable();
String oldvalue = null;//定义全局变量用于记录编辑前得内容
t.getModel().addTableModelListener(new TableModelListener(){
public void tableChanged(TableModelEvent e) {
if(e.getType() == TableModelEvent.UPDATE){
/*
* do some thing 获得编辑后单元格得值
*/
String newvalue = t.getValueAt(e.getLastRow(),e.getColumn()).toString();
if(!newvalue.equals(oldvalue)){
/*
* call the value changed metod;
*/
}
}
}
});
这样就可以对其是否进入过编辑状态有了监听,然后在给其添加mouselistener就可以对其进去编辑状态前得情况进行记录
t.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e){
//记录进入编辑状态前单元格得数据
oldvalue = t.getValueAt(t.getSelectedRow(),t.getSelectedColumn()).toString();
}
});
另参考:http://blog.sina.com.cn/s/blog_63e95ee70100nz1p.html
JTable得单元格(cell)在渲染得时候使用得是默认得DefaultTableCellRenderer。其返回的Component是继承了 JLabel得组件,所以直接使用默认得渲染器对其内容的更改显得力不从心。其监听主要在他得CellEditor上面JTable使用的默认得编辑器为 JTextField,这样你就可以重新添加编辑器即继承DefaultCellEditor然后给其添加一定得监听事件后在对jtable添加编辑器, 单这样做我感觉过于过于繁琐。在单元格进行编辑的时候会触发TablechangEvent 事件,Tablechange事件提供了几种触发事件得类型主要分为:
1.insert
2.update
3.delete
如果要对其某个单元格得内容是否真得发生了更改得话只有选择update类型,但其监听得事件是在你双击进入编辑状态后不管有没有对数据进行更改都会触发 此事件。如果我们能获得进入编辑状态前和编辑状态完成后得内容是很容易确定其内容是否真得进行过更改得。
首先对Jtable添加TableModelListener方法如下
JTable t = new JTable();
String oldvalue = null;//定义全局变量用于记录编辑前得内容
t.getModel().addTableModelListener(new TableModelListener(){
public void tableChanged(TableModelEvent e) {
if(e.getType() == TableModelEvent.UPDATE){
/*
* do some thing 获得编辑后单元格得值
*/
String newvalue = t.getValueAt(e.getLastRow(),e.getColumn()).toString();
if(!newvalue.equals(oldvalue)){
/*
* call the value changed metod;
*/
}
}
}
});
这样就可以对其是否进入过编辑状态有了监听,然后在给其添加mouselistener就可以对其进去编辑状态前得情况进行记录
t.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e){
//记录进入编辑状态前单元格得数据
oldvalue = t.getValueAt(t.getSelectedRow(),t.getSelectedColumn()).toString();
}
});
另参考:http://blog.sina.com.cn/s/blog_63e95ee70100nz1p.html
相关文章推荐
- JTable 为单元格添加按钮效果和事件效果
- JTable 为单元格添加按钮效果和事件效果
- JTable 为单元格添加按钮效果和事件效果
- Gridview的RowDataBound事件(添加删除提示,改变背景颜色)
- 动态添加Html单元格时,事件怎么写?如mouseover事件
- Android开发学习笔记:为动态添加的EditText控件绑定值改变监听事件
- Bootstrap-table的使用及如何给单元格添加功能按钮和事件等操作!
- Ecology8二次开发:HTML表单添加值改变事件
- 点击tr实现选择checkbox功能,点击checkobx的时候阻止冒泡事件, jquery给checkbox添加checked属性或去掉checked属性不能使checkobx改变状态
- 【MARK】C# DataGridView控件单元格 未提交 内容改变事件
- 为 checkbox 添加事件,使选中和非选中时改变其他几个checkbox的可选状态
- swing之JTable小测试(一个单元格添加两个或多个下拉框)
- Gridview的RowDataBound事件(添加删除提示,改变背景颜色)
- swing之JTable小测试(一个单元格添加两个或多个下拉框)
- JTable选定单元格时改变所选单元格的颜色
- 鼠标事件改变JTable的行高
- 给JTable 的每个单元格添加 tooltips
- vc++ 单文档程序添加窗口移动事件(不是大小改变),以实现子窗口的伴随移动
- JTable中添加组件后,改变当选中时的背景色
- Swing-JTable检测单元格数据变更事件