我在修復某些程序時遇到了問題。基本上我知道如何使用動作監聽器,但是沒有選擇將一個添加到JTable
。這是如何完成的?如何將表監聽器添加到JTable?
基本上我想添加一個動作偵聽器到我的表中,這樣每次值改變時它都會更新我的數據庫中的那個字段。
I.E.
JTable.addActionListener (new ActionListener) {
// text is changed
updateDataBase();
};
我在修復某些程序時遇到了問題。基本上我知道如何使用動作監聽器,但是沒有選擇將一個添加到JTable
。這是如何完成的?如何將表監聽器添加到JTable?
基本上我想添加一個動作偵聽器到我的表中,這樣每次值改變時它都會更新我的數據庫中的那個字段。
I.E.
JTable.addActionListener (new ActionListener) {
// text is changed
updateDataBase();
};
你應該一個監聽器添加到TableModel
:
yourtableObject.getModel().addTableModelListener(new TableModelListener() {
public void tableChanged(TableModelEvent e) {
// your code goes here, whatever you want to do when something changes in the table
}
});
TableModelEvent
包含的行和列數和修改的類型。
TableModelEvent
用於通知偵聽器表格模型已更改。
公共類tableListener實現TableModelListener { 公共tableListener(){ JTableSchedule.getModel()。addTableModelListener(新TableModelListener(){ @Override 公共無效tableChanged(方法method = new Methods(); try {(s));方法method = new Methods(); try { 方法。updatedb的(); Logger.getLogger(SchedulerGUI.class.getName()).log(Level.SEVERE,null,ex);方法如下所示:Logger.getLogger(SchedulerGUI.class.getName())。 } – 2015-02-10 07:10:24
尖銳的邊緣我做了你所說的,但它不會工作。它說這不是抽象的。你能告訴我如何解決這個問題嗎? – 2015-02-10 07:11:42
@SeamusOConnor你爲什麼要爲此做一個單獨的課程?只需在你的類中使用'JTable',並在初始化'JTable'後使用上面的代碼片段 – 2015-02-10 10:44:23
開始採取看看How to Use Tables
你會想要做的是註冊一個TableModelListener
與JTable
的模型和監控的變化有
你也可以找到一些使用How to Write a Table Model Listener
那種東西你尋找的是
TableModel#getType
等於TableModelEvent.UPDATE
TableModel#getFirstRow
和TableModel#getLastRow
通常等於(單獨一個單列爲更新),這可能會或可能不相關,這是由你來決定TableModel#getColumn
不等於TableModelEvent.ALL_COLUMNS
,這意味着單個單元格已更新。同樣,這可能是也可能不是很重要,但是如果電池是由用戶編輯的,這將是有設置
覆蓋setValueAt,沒有理由使用TableModelListener (基本上我知道如何使用動作監聽器,但沒有選項可以將其添加到JTable),TableModelListener沒有被指定通知有關從JTable到其他Swing GUI的更改 – mKorbel 2015-02-06 06:28:13
@Seamus請學習[接受答案](http://stackoverflow.com/help/accepted-answer)。 – 2015-02-06 11:56:51
@Sharp邊緣:-)我懷疑它,因爲沒有人在這個線程的答案是正確的(http://stackoverflow.com/questions/8099098/why-never-change-the-notifier-在接收-A-變化事件) – mKorbel 2015-02-06 14:32:11