日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

转:JTable添加单元格改变事件

發布時間:2023/12/13 综合教程 27 生活家
生活随笔 收集整理的這篇文章主要介紹了 转:JTable添加单元格改变事件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在使用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添加单元格改变事件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。