проследяване на промените в клетките на JTable

Разработка на десктоп приложения на i. /

Swing, AWT & SWT

03 август 2010 23:13
04 август 2010 09:13
04 август 2010 10:33
04 август 2010 15:00
27 януари 2011 г. 01:35 ч

Изглежда, че пиша в правилната тема =) Мога да проследявам промените с помощта на TableModelListener. Но как да запазя нови стойности? Имам запазена само последната модифицирана стойност, когато записвам таблицата във файл. Приемам, че трябва да използвам setValueAt()? Мислех, че DefaultTableModel го предоставя автоматично.

И така, опитах се да напиша метод за запазване на промените.

Промените се проследяват по следния начин:

След това се оказва, че програмата влиза в безкраен цикъл, доколкото разбирам. Как се пишат промени?

27 януари 2011 06:06

Моделът е екземпляр на DefaultTableModel? Явно да.

Ако погледнете източниците на метода DefaultTableModel#setValueAt(), тогава в последния ред на метода можете да видите извикването на метода, отговорен за генерирането на събитието за промяна на клетката. Продължете, или вие самите го мислите?

27 януари 2011 г. 16:11 ч

Моделът е екземпляр на DefaultTableModel? Явно да.

Ако погледнете източниците на метода DefaultTableModel#setValueAt(), тогава в последния ред на метода можете да видите извикването на метода, отговорен за генерирането на събитието за промяна на клетката. Продължете, или вие самите го мислите?

Не, за съжаление не мисля така. Виждам, че този метод ще генерира известие за tableChanged. Тоест всеки път, когато направя setValueAt(), се извиква методът tableChanged. И въпросът ми всъщност е как да изляза от този порочен кръг? Знам, че за мнозина ще изглежда глупаво =)

Опитахдобавете TableCellUpdated

В резултат на това промените изобщо не се запазват =(