要解决表格刷新后事件监听器不活动的问题,可以使用以下方法:
JTable table = new JTable();
// 创建表格刷新后事件的监听器
ActionListener refreshListener = new ActionListener() {
public void actionPerformed(ActionEvent e) {
// 处理表格刷新后的逻辑
// ...
}
};
// 注册表格刷新后事件的监听器
table.getModel().addTableModelListener(new TableModelListener() {
public void tableChanged(TableModelEvent e) {
// 表格被修改后,重新注册表格刷新后事件的监听器
table.getModel().removeTableModelListener(this);
table.getModel().addTableModelListener(this);
table.addComponentListener(new ComponentAdapter() {
public void componentResized(ComponentEvent e) {
// 表格大小被改变后,重新注册表格刷新后事件的监听器
table.getModel().removeTableModelListener(this);
table.getModel().addTableModelListener(this);
}
});
}
});
// 注册组件大小改变事件的监听器
table.addComponentListener(new ComponentAdapter() {
public void componentResized(ComponentEvent e) {
// 组件大小被改变后,重新注册表格刷新后事件的监听器
table.getModel().removeTableModelListener(this);
table.getModel().addTableModelListener(this);
}
});
JTable table = new JTable();
// 创建表格刷新后事件的监听器
ActionListener refreshListener = new ActionListener() {
public void actionPerformed(ActionEvent e) {
// 处理表格刷新后的逻辑
// ...
}
};
// 注册表格刷新后事件的监听器
table.getModel().addTableModelListener(new TableModelListener() {
public void tableChanged(TableModelEvent e) {
// 表格被修改后,延迟注册表格刷新后事件的监听器
SwingUtilities.invokeLater(new Runnable() {
public void run() {
table.getModel().addTableModelListener(this);
}
});
}
});
// 注册组件大小改变事件的监听器
table.addComponentListener(new ComponentAdapter() {
public void componentResized(ComponentEvent e) {
// 组件大小被改变后,延迟注册表格刷新后事件的监听器
SwingUtilities.invokeLater(new Runnable() {
public void run() {
table.getModel().addTableModelListener(this);
}
});
}
});
这些方法可以确保在表格刷新后重新注册事件监听器,以保持监听器的活动状态。
上一篇:表格手风琴中的按钮不会改变
下一篇:表格刷新后未调用格式化程序