java JTable监听事件没反应
时间: 2023-10-28 20:05:49 浏览: 63
如果你在监听JTable事件时没有得到任何反应,可能是因为你没有正确地添加事件监听器。
要监听JTable事件,通常有两种方法:使用TableModelListener监听TableModel事件,或使用MouseListener监听鼠标事件。下面是两种方法的示例代码:
使用TableModelListener监听TableModel事件:
```java
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.DefaultTableModel;
public class JTableEventListenerExample extends JFrame {
private JTable table;
private DefaultTableModel model;
public JTableEventListenerExample() {
setTitle("JTable Event Listener Example");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400, 300);
// 创建表格模型及表格
model = new DefaultTableModel();
model.addColumn("ID");
model.addColumn("Name");
model.addColumn("Age");
table = new JTable(model);
// 添加表格模型的监听器
model.addTableModelListener(new TableModelListener() {
@Override
public void tableChanged(TableModelEvent e) {
if (e.getType() == TableModelEvent.UPDATE) {
int row = e.getFirstRow();
int col = e.getColumn();
Object value = model.getValueAt(row, col);
System.out.println("Cell (" + row + ", " + col + ") changed to " + value);
}
}
});
// 添加数据到表格模型
model.addRow(new Object[]{"1", "Alice", "18"});
model.addRow(new Object[]{"2", "Bob", "20"});
model.addRow(new Object[]{"3", "Charlie", "22"});
model.addRow(new Object[]{"4", "Dave", "24"});
model.addRow(new Object[]{"5", "Eve", "26"});
// 添加表格到窗口
add(new JScrollPane(table));
setVisible(true);
}
public static void main(String[] args) {
new JTableEventListenerExample();
}
}
```
使用MouseListener监听鼠标事件:
```java
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.event.MouseInputAdapter;
import java.awt.event.MouseEvent;
public class JTableMouseListenerExample extends JFrame {
private JTable table;
public JTableMouseListenerExample() {
setTitle("JTable Mouse Listener Example");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400, 300);
// 创建表格并添加鼠标监听器
table = new JTable(new Object[][]{
{"1", "Alice", "18"},
{"2", "Bob", "20"},
{"3", "Charlie", "22"},
{"4", "Dave", "24"},
{"5", "Eve", "26"}
}, new Object[]{"ID", "Name", "Age"});
table.addMouseListener(new MouseInputAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
int row = table.rowAtPoint(e.getPoint());
int col = table.columnAtPoint(e.getPoint());
Object value = table.getValueAt(row, col);
System.out.println("Cell (" + row + ", " + col + ") clicked: " + value);
}
});
// 添加表格到窗口
add(new JScrollPane(table));
setVisible(true);
}
public static void main(String[] args) {
new JTableMouseListenerExample();
}
}
```
如果你仍然无法监听到JTable事件,请检查你的代码是否正确地添加了事件监听器,并且监听器的回调方法是否正确实现。