在我的表单中,我有一个带有 TableModelListener 的 JTable。tableChanged 方法更新我的 JButton 上的逻辑。这一切正常。当用户在 jtable 中的单元格中编辑值时 - tableChanged 方法将执行并且相应地刷新按钮。
我遇到的问题是一个表演障碍。JTable 显示对象和对象的一些属性。用户从应用程序中选择对象。
如果我选择了一个对象并显示在 jtable 中。如果该用户更改了应用程序中的属性值而不是在 JTable 中编辑它。jtable 仍然刷新,并显示更改的值。但是没有发生 TableModelEvent 并且我的按钮逻辑永远不会刷新。
我看过 TableCellListeners - 但仍在寻找表格中的编辑。所以我认为这在这里行不通。
我怎么知道有些事情发生了变化并且表已经更新,而 jtable 本身没有发生事件?
编辑:放置一些 jtable 代码
这是在我的基础对话框类中
selectTable = new JTable(SingletonSelectTable.getInstance());
selectTable.getModel().addTableModelListener(this);
selectTable.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
Component comp = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
Font font = comp.getFont();
if (SingletonSelectTable.getInstance().isCellBold(row, column) == true){
comp.setFont(font.deriveFont(Font.BOLD));
}
return comp;
}
});
selectTable.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
selectTable.setCellSelectionEnabled(false);
selectTable.setRowSelectionAllowed(true);
selectTable.setColumnSelectionAllowed(false);
JScrollPane ScrollPane = new JScrollPane(selectTable);
tableChanged 方法
public void tableChanged(TableModelEvent e) {
setRemoveButtonVisibility();
setRemoveAllButtonVisibility();
setCommentButtonVisibility();
setOKButtonEnabledStatus();
}
我的单身班
public class SingletonSelectTable extends AbstractTableModel {
我希望这有帮助