powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Значение ячейки таблици не изменяется.
7 сообщений из 7, страница 1 из 1
Значение ячейки таблици не изменяется.
    #33725711
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть самопальный редактор. Редактор вызывает самопальный диалог и возвращает то что ввели в редакторе. И всё бы хорошо, да вот только почему-то не меняется ячейка таблици.
Вот редактор:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
 package  bqedit.questioneditor;

 import  javax.swing.table.*;
 import  javax.swing.*;
 import  java.awt.Component;
 import  java.util.EventObject;
 import  javax.swing.AbstractCellEditor;
 import  java.awt.event.*;

/**
 *
 * @author sarin2.0
 */
 public   class  QuestionCellEditor  extends  AbstractCellEditor  implements  TableCellEditor{
    
    /** Creates a new instance of QuestionCellEditor */
     public  QuestionCellEditor() {
         this .dialog.addHandler( new  StopEditingHandler());
    }
    
     public   boolean  isCellEditable(EventObject event){
         return  true;
    }
    
     public   boolean  shouldSelectCell(EventObject event){
         this .dialog.setVisible(true);
         return  true;
    }
    
     public   void  cancelCellEditing(){
         this .dialog.setVisible(false);
         super .cancelCellEditing();
    }
    
     public   boolean  stopCellEditing(){
         this .dialog.setVisible(false);
         super .cancelCellEditing();
         return  true;
    }
    
     public  Object getCellEditorValue(){
        System.out.println( this .dialog.getQuestion());
         return   this .dialog.getQuestion();
    }
    
     public  Component getTableCellEditorComponent(JTable table, Object value,  boolean  isSelected,  int  row,  int  column){
         this .dialog.setQuestion((String)value);
        
        JTextPane pane =  new  JTextPane();
        pane.setText((String)value);
        
         return  pane;
    }
    
     class  StopEditingHandler  implements  ActionListener{
         public   void  actionPerformed(ActionEvent e){
            stopCellEditing();
        }
    }
    
     private  QuestionEditDialog dialog =  new  QuestionEditDialog( null );
    
}
...
Рейтинг: 0 / 0
Значение ячейки таблици не изменяется.
    #33725715
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Экспирименты показали, что не вызывается getCellEditorValue
...
Рейтинг: 0 / 0
Значение ячейки таблици не изменяется.
    #33725843
AciD_v
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я думаю надо заменить super.cancelCellEditing() в stopCellEditing() на super.stopCellEditing(). :)
...
Рейтинг: 0 / 0
Значение ячейки таблици не изменяется.
    #33725844
AciD_v
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще стоит создать "фиктивный" компонент-редактор один раз при инициализации вместо того, чтобы создавать его каждый раз при вызове getTableCellEditorComponent:
Код: plaintext
1.
         private  JTextPane pane =  new  JTextPane();
...
Рейтинг: 0 / 0
Значение ячейки таблици не изменяется.
    #33726059
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо. Модель теперь обновляется. Однако представление почемуто не изменяется.
...
Рейтинг: 0 / 0
Значение ячейки таблици не изменяется.
    #33726543
jet8
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
((AbstractTableModel) table.getModel()).fireTableStructureChanged();
((AbstractTableModel) table.getModel()).fireTableDataChanged();
...
Рейтинг: 0 / 0
Значение ячейки таблици не изменяется.
    #33727364
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Простите меня. Я дурак!

Я высчитывал значение ячейки при вызове метода getValueAt. Поэтому модель и неизменялась.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Значение ячейки таблици не изменяется.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]