如何向 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.
您要做的是用 JTable
的模型注册一个 TableModelListener
并监视那里的变化
您可能还会发现 How to Write a Table Model Listener 有一些用处
您正在寻找的是
TableModel#getType
等于 TableModelEvent.UPDATE
TableModel#getFirstRow
和 TableModel#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
我在修复程序中的某些内容时遇到问题。基本上我知道如何使用动作监听器,但是没有选项可以将一个添加到 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.
您要做的是用 JTable
的模型注册一个 TableModelListener
并监视那里的变化
您可能还会发现 How to Write a Table Model Listener 有一些用处
您正在寻找的是
TableModel#getType
等于TableModelEvent.UPDATE
TableModel#getFirstRow
和TableModel#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