Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Отображение изменений в JTable / 18 сообщений из 18, страница 1 из 1
01.02.2006, 13:49
    #33515965
avart
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отображение изменений в JTable
Сделал редактируемую таблицу
вствил метод
Код: 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.
 public   void  setValueAt(Object value,  int  row,  int  column)
	{
           try 
	    {
	    	 if  (value  instanceof  Integer)
	    	{
	    	 int  val=Integer.parseInt(value.toString());
	    	resultSet.absolute(row+ 1 );
	    	resultSet.updateInt(column+ 1 , val);  
			resultSet.updateRow();
			}
				 if  (value  instanceof  String)
	    	{
	    	String val=(String) value;
	    	resultSet.absolute(row+ 1 );
	    	resultSet.updateString(column+ 1 , val);  
			resultSet.updateRow();
			}			
	    }
	     catch  (Exception ex)
	    {
               System.err.println(ex);
            }
           fireTableCellUpdated(row, column);           
    }
данные обновляются , но таблица показывает что то вроде [B@18941f7
То что данные в базе меняются видно при повторном запросе и в самой базе.
При повторном запросе и читается нормально.
Что изменить чтоб сразу таблица выглядела нормально?
Подскажите плиз...
...
Рейтинг: 0 / 0
01.02.2006, 14:40
    #33516209
peter6636
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отображение изменений в JTable
Попробуй воспользоваться
Код: plaintext
1.
2.
3.
4.
 public   Class  getColumnClass( int  col){
        if (col==номер колонки где показывает глюк)        
             return  Integer. class ;
     }
...
Рейтинг: 0 / 0
01.02.2006, 15:06
    #33516324
avart
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отображение изменений в JTable
Не помогло

у меня там
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
 public   Class  getColumnClass( int  column)
	{
		 try 
		{			
		String className=metaData.getColumnClassName(column+ 1 );
				System.out.println("myprint"+className);
				 return   Class .forName(className);	
		}
		 catch  (SQLException e)
		{
			e.printStackTrace();
		}
		 catch  (ClassNotFoundException ex)
		{
			ex.printStackTrace();
		}
				 return    Object. class ;
		
	}
Строчку System.out.println("myprint"+className);
вывел специально чтоб проверить
выдает правильное определение классов по таблице
...
Рейтинг: 0 / 0
01.02.2006, 15:15
    #33516367
peter6636
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отображение изменений в JTable
а это что за фигня в твоем коде return Object.class;
нафига она там нужна
...
Рейтинг: 0 / 0
01.02.2006, 15:32
    #33516456
avart
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отображение изменений в JTable
Это в случае неопределения класса. Если эту строчку поменять

return String.class;
ничего не меняется

вот трейс ошибки

это TableModelEvent e из метода tableChanged
авторjavax.swing.event.TableModelEvent[source=ResultSetTableModel@e0cc23]
javax.swing.event.TableModelEvent[source=ResultSetTableModel@e0cc23]

а это из getColumnClass
Код: plaintext
1.
2.
3.
[B
java.lang.String
[B
java.lang.String
...
Рейтинг: 0 / 0
01.02.2006, 15:39
    #33516488
Penkov Vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отображение изменений в JTable
а getValueAt() как выглядит?


-----------------------------------
The Bat + My Gate

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
01.02.2006, 15:42
    #33516506
peter6636
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отображение изменений в JTable
avartЭто в случае неопределения класса. Если эту строчку поменять

return String.class;
ничего не меняется

вот трейс ошибки

это TableModelEvent e из метода tableChanged
авторjavax.swing.event.TableModelEvent[source=ResultSetTableModel@e0cc23]
javax.swing.event.TableModelEvent[source=ResultSetTableModel@e0cc23]

а это из getColumnClass
Код: plaintext
1.
2.
3.
[B
java.lang.String
[B
java.lang.String

в таком случае она должна быть в catch()
...
Рейтинг: 0 / 0
01.02.2006, 15:51
    #33516540
avart
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отображение изменений в JTable
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
 public  Object getValueAt( int  row, int  column)
	{
		 try 
		{
			resultSet.absolute(row+ 1 );
			 return  resultSet.getObject(column+ 1 );
		} catch  (SQLException sqlexception)
		{
			sqlexception.printStackTrace();
		}
				 return  "";
	}

peter6636 , кто она ?
...
Рейтинг: 0 / 0
01.02.2006, 15:53
    #33516545
peter6636
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отображение изменений в JTable
avart
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
 public  Object getValueAt( int  row, int  column)
	{
		 try 
		{
			resultSet.absolute(row+ 1 );
			 return  resultSet.getObject(column+ 1 );
		} catch  (SQLException sqlexception)
		{
			sqlexception.printStackTrace();
		}
				 return  "";
	}

peter6636 , кто она ?
строчка return ""
...
Рейтинг: 0 / 0
01.02.2006, 16:00
    #33516581
avart
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отображение изменений в JTable
Ошибка в том что в getValueAt у меня стоял
resultSet.absolute(row+1);
return resultSet. getObject (column+1);


я поменял на
resultSet.absolute(row+1);
return resultSet. getString (column+1);
и все стало нормально
теперь надо как то динамически прописать класс колонки
...
Рейтинг: 0 / 0
01.02.2006, 16:10
    #33516622
Penkov Vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отображение изменений в JTable
так она и так из БД берется
...
Рейтинг: 0 / 0
01.02.2006, 16:12
    #33516626
Penkov Vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отображение изменений в JTable
то есть он (класс)
...
Рейтинг: 0 / 0
01.02.2006, 16:15
    #33516642
avart
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отображение изменений в JTable
Я тоже был в этом уверен но выходит он берется и JTable когда обновляешь запрос
а при редактировании почемуто нет
что делать?
...
Рейтинг: 0 / 0
02.02.2006, 00:02
    #33517672
expp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отображение изменений в JTable
Result set'ы разные бывают.
насколько я понимаю лучше использовать отсоединённый RowSet-
...
Рейтинг: 0 / 0
02.02.2006, 10:29
    #33518121
avart
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отображение изменений в JTable
Это как?
У меня модель и там
public Class getColumnClass(int column){
............
String className= metaData .getColumnClassName(column+1);
return
Class.forName(className);
}

После изменения поля таблицы и апдейта базы меняется
metaData .
глючит только та колонка, в которой были изменения
...
Рейтинг: 0 / 0
14.03.2006, 20:36
    #33600707
MaLL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отображение изменений в JTable
Я определил что в метадате класс String колонки меняется на ]B сразу после вызова resultSet.updateString(col + 1, value);
Блин, долблюсь уже который час, а так и не понял, что нада сделать, кроме обновления.
Кто нибудь знает как это исправить?
...
Рейтинг: 0 / 0
16.03.2006, 19:38
    #33606526
AciD_v
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отображение изменений в JTable
Сделай проверку типа колонки в методе getValueAt():

Код: plaintext
1.
2.
3.
4.
5.
6.
resultSet.absolute(row+ 1 );
 if  (getColumnClass(column) ==  byte []. class ) {
   return  resultSet.getString(column+ 1 );
} eslse {
   return  resultSet.getObject(column+ 1 );
}
...
Рейтинг: 0 / 0
05.04.2006, 17:42
    #33647178
avart
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отображение изменений в JTable
Я разобрался если кому то интересно
дело не в обсуждаемом этом фрагменте кода
всего навсего поменял
авторpublic Class getColumnClass(int column)
{
try
{
String className=metaData.getColumnClassName(column+1);
return Class.forName(className);
}
catch (SQLException sqlexception)
{
sqlexception.printStackTrace();
}
catch (ClassNotFoundException exception)
{
exception.printStackTrace();
}
return Object.class;
}

на

автор public Class getColumnClass(int c) {
return getValueAt(0, c).getClass();
}
после этого все ок
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Отображение изменений в JTable / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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