2015-02-06 88 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更多细节

相关问题