powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос по TableModel
2 сообщений из 2, страница 1 из 1
Вопрос по TableModel
    #34181478
diablero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для поворота данных в таблиуе используются две модели данных.
Первая, оригинальная, в которой забиваються все данные, и вторая, транспонированная.
Вопрос в том, как переопределить метод getClass() в транспонированной таблице, т.е. подсовывать вместо номера колонки, номер строки

Оригинальная:
Код: 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.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
 public   class  DatabaseTableModel  extends  AbstractTableModel
    {
         private  ArrayList columnNames =  new  ArrayList();
         private  ArrayList columnTypes =  new  ArrayList();
         private  ArrayList data =  new  ArrayList();
         private   boolean  editable;

         public  DatabaseTableModel( boolean  editable)
        {
             this .editable = editable;
        }
         public   int  getRowCount()
        {
             synchronized (data)
            {
                return  data.size();
            }
        }
         public   int  getColumnCount()
        {
             return  columnNames.size();
        }
         int  x;
         public   Class  getColumnClass( int  column)
        {
             return  ( Class )columnTypes.get(column);
        }
         public  String getColumnName( int  column)
        {
             return  (String)columnNames.get(column);
        }
         public  Object getValueAt( int  row,  int  column)
        {
             synchronized (data)
            {
                 return  ((ArrayList)data.get(row)).get(column);
            }
        }
         public   boolean  isEditable( int  row,  int  column)
        {
             return  editable;
        }
         public   void  setValueAt(Object value,  int  row,  int  column)
        {
             synchronized (data)
            {
                ((ArrayList)data.get(row)).set(column, value);
            }
        }
         private   Class  getClassName(String type, String _class)
        {
             Class  ClassName =  null ;
             if  (type=="BLOB")
                 return  Icon. class ;
             else 
            {
                 try 
                    {ClassName= Class .forName(_class);}
                 catch (Exception err)
                    {}
             return  ClassName;
            }
        }
         public   void  setDataSource(ResultSet rs)  throws  Exception
        {
            data.clear();
            columnNames.clear();
            columnTypes.clear();

            ResultSetMetaData rsmd = rs.getMetaData();
             int  columnCount = rsmd.getColumnCount();
            
             for ( int  i= 0 ; i<columnCount; i++)
            {
                columnNames.add(rsmd.getColumnName(i+ 1 ));
                 Class  type=getClassName(rsmd.getColumnTypeName(i+ 1 ),rsmd.getColumnClassName(i+ 1 ));
                columnTypes.add(type);
            }
           fireTableDataChanged();

             while (rs.next())
            {
                ArrayList row =  new  ArrayList();
                 for ( int  i= 0 ; i<columnCount; i++)
                {
                   if (columnTypes.get(i) == Icon. class )
                  {
                       byte  image []= rs.getBytes(i+ 1 );
                       if  (image!= null )
                        row.add( new  ImageIcon(image));
                       else 
                        row.add( null );
                  }
                   else 
                       row.add(rs.getObject(i+ 1 ));
                }

                 synchronized (data)
                {
                    data.add(row);

                     this .fireTableRowsInserted(data.size()- 1 , data.size()- 1 );
                }
            }
        }
    }
Транспонированная:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
 public   class  TransposeTableModel  extends  AbstractTableModel
{
    DatabaseTableModel model;

     public  TransposeTableModel( boolean  editable)
    {
        model =  new  DatabaseTableModel(editable);
    }
     public   int  getRowCount()
    {
         return  model.getColumnCount();
    }
     public   int  getColumnCount()
    {
         return  model.getRowCount();
    }
Код: plaintext
1.
2.
3.
4.
5.
6.
     public   Class  getColumnClass( int  column)
    {
        // ???????
        // ???????
        // ???????
    }
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
     public  Object getValueAt( int  row,  int  column)
    {
         return  model.getValueAt(column, row);
    }
     public   void  setDataSource(ResultSet rs)  throws  Exception
    {
        model.setDataSource(rs);
    }
}
...
Рейтинг: 0 / 0
Вопрос по TableModel
    #34182250
expp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
этот метод используется для привязки редакторов и рендереров. и на скольколько мой ... помнит. если привязать редакторы к колонкам то классы JTable спрашивать не будет. Короче поставь на них throw exception и по трассировкам погляди когда и откуда они вызываются и попытайся этого избежать. как вариант расширить JTable - чтоб мог по круче привязывать редахторы. или универсальный редахтор на все колонки, чтоб делегировал нужному. короче - см. сырцы там ничего страшного, что то такое я делал
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос по TableModel
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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