如何向 JTable 添加 table 侦听器?

How to add a table listener to a JTable?

我在修复程序中的某些内容时遇到问题。基本上我知道如何使用动作监听器,但是没有选项可以将一个添加到 JTable。这是怎么做到的?

基本上我想向我的 table 添加一个动作侦听器,这样每次更改值时它都会更新我的数据库中的该字段。

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 is used to notify listeners that a table model has changed.

先看看 How to Use Tables

您要做的是用 JTable 的模型注册一个 TableModelListener 并监视那里的变化

您可能还会发现 How to Write a Table Model Listener 有一些用处

您正在寻找的是

  • TableModel#getType 等于 TableModelEvent.UPDATE
  • TableModel#getFirstRowTableModel#getLastRow 通常是相等的(单独更新了一行),这可能相关也可能不相关,由您决定
  • TableModel#getColumn 不等于 TableModelEvent.ALL_COLUMNS,这表示更新了单个单元格。同样,这可能重要也可能不重要,但如果用户编辑了单元格,这将被设置

查看 javax.swing.event.TableModelEvent 了解更多详情

如果你想在选择发生变化时有一个事件,你可以使用:

table.getSelectionModel()addListSelectionListener(new ListSelectionListener() {
    @Override
    public void valueChanged(ListSelectionEvent l) {
    //action
    }
});

来源:http://www.java2s.com/Tutorial/Java/0240__Swing/TableSelectionEventsandListeners.htm