Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Значение ячейки таблици не изменяется. / 7 сообщений из 7, страница 1 из 1
14.05.2006, 22:40
    #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
14.05.2006, 22:45
    #33725715
Sarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Значение ячейки таблици не изменяется.
Экспирименты показали, что не вызывается getCellEditorValue
...
Рейтинг: 0 / 0
15.05.2006, 04:06
    #33725843
AciD_v
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Значение ячейки таблици не изменяется.
Я думаю надо заменить super.cancelCellEditing() в stopCellEditing() на super.stopCellEditing(). :)
...
Рейтинг: 0 / 0
15.05.2006, 04:13
    #33725844
AciD_v
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Значение ячейки таблици не изменяется.
И еще стоит создать "фиктивный" компонент-редактор один раз при инициализации вместо того, чтобы создавать его каждый раз при вызове getTableCellEditorComponent:
Код: plaintext
1.
         private  JTextPane pane =  new  JTextPane();
...
Рейтинг: 0 / 0
15.05.2006, 09:21
    #33726059
Sarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Значение ячейки таблици не изменяется.
Спасибо. Модель теперь обновляется. Однако представление почемуто не изменяется.
...
Рейтинг: 0 / 0
15.05.2006, 11:57
    #33726543
jet8
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Значение ячейки таблици не изменяется.
((AbstractTableModel) table.getModel()).fireTableStructureChanged();
((AbstractTableModel) table.getModel()).fireTableDataChanged();
...
Рейтинг: 0 / 0
15.05.2006, 14:47
    #33727364
Sarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Значение ячейки таблици не изменяется.
Простите меня. Я дурак!

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


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