2015-02-06 87 views
1

我在修復某些程序時遇到了問題。基本上我知道如何使用動作監聽器,但是沒有選擇將一個添加到JTable。這是如何完成的?如何將表監聽器添加到JTable?

基本上我想添加一個動作偵聽器到我的表中,這樣每次值改變時它都會更新我的數據庫中的那個字段。

I.E.

JTable.addActionListener (new ActionListener) { 
    // text is changed 
    updateDataBase(); 
}; 
+0

覆蓋setValueAt,沒有理由使用TableModelListener (基本上我知道如何使用動作監聽器,但沒有選項可以將其添加到JTable),TableModelListener沒有被指定通知有關從JTable到其他Swing GUI的更改 – mKorbel 2015-02-06 06:28:13

+0

@Seamus請學習[接受答案](http://stackoverflow.com/help/accepted-answer)。 – 2015-02-06 11:56:51

+0

@Sharp邊緣:-)我懷疑它,因爲沒有人在這個線程的答案是正確的(http://stackoverflow.com/questions/8099098/why-never-change-the-notifier-在接收-A-變化事件) – mKorbel 2015-02-06 14:32:11

回答

3

你應該一個監聽器添加到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用於通知偵聽器表格模型已更改。

+0

公共類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

+0

尖銳的邊緣我做了你所說的,但它不會工作。它說這不是抽象的。你能告訴我如何解決這個問題嗎? – 2015-02-10 07:11:42

+0

@SeamusOConnor你爲什麼要爲此做一個單獨的課程?只需在你的類中使用'JTable',並在初始化'JTable'後使用上面的代碼片段 – 2015-02-10 10:44:23

0

開始採取看看How to Use Tables

你會想要做的是註冊一個TableModelListenerJTable的模型和監控的變化有

你也可以找到一些使用How to Write a Table Model Listener

那種東西你尋找的是

  • TableModel#getType等於TableModelEvent.UPDATE
  • TableModel#getFirstRowTableModel#getLastRow通常等於(單獨一個單列爲更新),這可能會或可能不相關,這是由你來決定
  • TableModel#getColumn不等於TableModelEvent.ALL_COLUMNS,這意味着單個單元格已更新。同樣,這可能是也可能不是很重要,但是如果電池是由用戶編輯的,這將是有設置

看看javax.swing.event.TableModelEvent更多細節

相關問題