在我的表單中,我有一個帶有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