在我的表单中,我有一个带有TableModelListener的JTable。 tableChanged方法更新我的JButton上的逻辑。这一切正常工作。当用户在jtable的单元格中编辑值时 - 执行tableChanged方法并相应地刷新按钮。tableChange()在刷新JTable时执行
我有问题,它是一个表演塞。 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 {
我希望这有助于
的部分如何JTable的小区变更没有改变TableModel中? – 2012-07-18 17:54:49
不知道...,为更好的帮助,尽早发布SSCCE – mKorbel 2012-07-18 18:34:53
getValueAt()方法获取更改,然后更新jtable – jkteater 2012-07-18 18:42:06