私のフォームには、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 {
これがお役に立てば幸いです