powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Сортировка столбцов в JTable
22 сообщений из 22, страница 1 из 1
Сортировка столбцов в JTable
    #33777453
GlukOza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В своей программе для сортировки столбцов использую класс TableSorter, взятый из интернета.

Как лучше сделать такое:

Если в запросе поле даты я представляю как String, то сортировка происходит не правильно.

Код: plaintext
1.
nvl(to_char(DS,'dd.mm.yyyy'),' ') DS 

Если поле типа Date - правильно.
То же самое дело обстот и с полями типа double.

Поделитесь, кто как решает эту проблему.
...
Рейтинг: 0 / 0
Сортировка столбцов в JTable
    #33778214
/**/
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
боюсь протупить, но все же попробую что-то посоветовать(если неправ - сильно не бейте):
в запросах всяких лучше использовать тип java.sql.Date
и в методе getColumnClass(); лучше указывать этот же тип данных.
тогда даты "понимаются" правильно и по идее сортироваться должны тоже правильно. В случае с Double - то же самое.
иначе sorter не понимает по какому признаку ему сортировать и вряд ли есть какой-то путь заставить его сортировать строки как даты
...
Рейтинг: 0 / 0
Сортировка столбцов в JTable
    #33778253
ТимоН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЕсли в запросе поле даты я представляю как String
Если уж никак без стринга можно в модели в дату сконвертить.
...
Рейтинг: 0 / 0
Сортировка столбцов в JTable
    #33778345
GlukOza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТимоН авторЕсли в запросе поле даты я представляю как String
Если уж никак без стринга можно в модели в дату сконвертить.

Да наверное так и прийдется...
...
Рейтинг: 0 / 0
Сортировка столбцов в JTable
    #33778406
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GlukOza ТимоН авторЕсли в запросе поле даты я представляю как String
Если уж никак без стринга можно в модели в дату сконвертить.

Да наверное так и прийдется...
по-моему это неправильно, к тому же со стрингами много возни. лучше не изобретать велосипед и дату возвращать как дату (через java.sql.Timestamp) и в модели использовать ее, а для отображения поставить свой cell renderer. MVC и все такое :)
...
Рейтинг: 0 / 0
Сортировка столбцов в JTable
    #33778576
Vinni-pux
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Timmпо-моему это неправильно, к тому же со стрингами много возни. лучше не изобретать велосипед и дату возвращать как дату (через java.sql.Timestamp) и в модели использовать ее, а для отображения поставить свой cell renderer. MVC и все такое :)

Как сделать чтобы в JTable поле типа Date выводилось так: dd.mm.yyyy
У меня выводится так: yyyy-mm-dd
...
Рейтинг: 0 / 0
Сортировка столбцов в JTable
    #33778588
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vinni-pux Timmпо-моему это неправильно, к тому же со стрингами много возни. лучше не изобретать велосипед и дату возвращать как дату (через java.sql.Timestamp) и в модели использовать ее, а для отображения поставить свой cell renderer. MVC и все такое :)

Как сделать чтобы в JTable поле типа Date выводилось так: dd.mm.yyyy
У меня выводится так: yyyy-mm-dd

SimpleDateFormat нужно использовать для преобразования форматов дат
...
Рейтинг: 0 / 0
Сортировка столбцов в JTable
    #33778628
Vinni-pux
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wessen Vinni-pux Timmпо-моему это неправильно, к тому же со стрингами много возни. лучше не изобретать велосипед и дату возвращать как дату (через java.sql.Timestamp) и в модели использовать ее, а для отображения поставить свой cell renderer. MVC и все такое :)

Как сделать чтобы в JTable поле типа Date выводилось так: dd.mm.yyyy
У меня выводится так: yyyy-mm-dd

SimpleDateFormat нужно использовать для преобразования форматов дат


А мне надо чтобы поле было типа Date віводилось в таблице в виде dd.mm.yyyy
...
Рейтинг: 0 / 0
Сортировка столбцов в JTable
    #33778786
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vinni-pux
А мне надо чтобы поле было типа Date віводилось в таблице в виде dd.mm.yyyy

Отнаследуйся от класса Date и переопредели у него метод toString(). Соответственно в таблицу добавляй уже свой класс.
...
Рейтинг: 0 / 0
Сортировка столбцов в JTable
    #33778804
ТимоН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор
Отнаследуйся от класса Date и переопредели у него метод toString(). Соответственно в таблицу добавляй уже свой класс.
Некрасивое решение на мой взляд...
...
Рейтинг: 0 / 0
Сортировка столбцов в JTable
    #33778827
ТимоН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яб так сделал.
sun
Для отображения даты и времени в одной String, создайте форматтер при помощи метода getDateTimeInstance. Первый параметр - стиль даты, а второй параметр - стиль времени. Третий параметр - Locale. Вот маленький пример:
Код: plaintext
1.
2.
3.
    DateFormat formatter = 
        DateFormat.getDateTimeInstance(DateFormat. LONG ,
                                       DateFormat. LONG ,
                                       currentLocale);
...
Рейтинг: 0 / 0
Сортировка столбцов в JTable
    #33778933
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТимоНЯб так сделал.
sun
Для отображения даты и времени в одной String, создайте форматтер при помощи метода getDateTimeInstance. Первый параметр - стиль даты, а второй параметр - стиль времени. Третий параметр - Locale. Вот маленький пример:
Код: plaintext
1.
2.
3.
    DateFormat formatter = 
        DateFormat.getDateTimeInstance(DateFormat. LONG ,
                                       DateFormat. LONG ,
                                       currentLocale);


ты это к чему вообще?
...
Рейтинг: 0 / 0
Сортировка столбцов в JTable
    #33779810
ТимоН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторА мне надо чтобы поле было типа Date віводилось в таблице в виде dd.mm.yyyy к этому....
...
Рейтинг: 0 / 0
Сортировка столбцов в JTable
    #33779942
GlukOza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТимоНЯб так сделал.
sun
Для отображения даты и времени в одной String, создайте форматтер при помощи метода getDateTimeInstance. Первый параметр - стиль даты, а второй параметр - стиль времени. Третий параметр - Locale. Вот маленький пример:
Код: plaintext
1.
2.
3.
    DateFormat formatter = 
        DateFormat.getDateTimeInstance(DateFormat. LONG ,
                                       DateFormat. LONG ,
                                       currentLocale);


Не могу понять, почему выдает ошибку при
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 public   class  TestDateFormat {
   public   static   void  main(String[] args)  throws  ParseException {
  
      DateFormat dateFormat = DateFormat.getDateInstance(DateFormat. DEFAULT );
      Date date_p = dateFormat.parse("08.06.2006");
      System.out.println(date_p);

  }
}

...
Рейтинг: 0 / 0
Сортировка столбцов в JTable
    #33779967
GlukOza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТимоН авторА мне надо чтобы поле было типа Date віводилось в таблице в виде dd.mm.yyyy к этому....

Какое выражение должно быть в sd, чтобы произошел парсинг?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
 DateFormat formatter =
        DateFormat.getDateTimeInstance(DateFormat. LONG ,
                                       DateFormat. LONG ,
                                       Locale.UK);
      Date dd = formatter.parse(sd);
      System.out.println("dd = " + dd);

...
Рейтинг: 0 / 0
Сортировка столбцов в JTable
    #33780069
GlukOza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чего то я не догоняю. Почему парсинг мне лает дату в виде
Tue Feb 24 00:00:00 EET 2004 ?


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
                Object entry = resultSet.getString(i);
                System.out.println("entry = " + entry);
                // entry = 24.02.2004
                DateFormat sdf =  new  SimpleDateFormat("dd.MM.yyyy",Locale.UK);
                 try  {
                          entry = sdf.parse(resultSet.getString(i));
                          System.out.println("entryUK = " + entry);
                          // entry = Tue Feb 24 00:00:00 EET 2004
                }  catch  (ParseException e) {
                          e.printStackTrace();
               }
...
Рейтинг: 0 / 0
Сортировка столбцов в JTable
    #33780099
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
птомучто метод parse возвращает объект Date, затем ты у него вызываешь toString, который по умолчанию возвращает дату именно в таком - Tue Feb 24 00:00:00 EET 2004 формате. Чтобы возвращалост то, что требуется, нужно смотреть решение здесь
...
Рейтинг: 0 / 0
Сортировка столбцов в JTable
    #33780280
GlukOza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wessen Vinni-pux
А мне надо чтобы поле было типа Date віводилось в таблице в виде dd.mm.yyyy

Отнаследуйся от класса Date и переопредели у него метод toString(). Соответственно в таблицу добавляй уже свой класс.


Первое я сделала. А как дабавить в таблицу свой класс. Мжет туплю страшно... Но все-таки...
...
Рейтинг: 0 / 0
Сортировка столбцов в JTable
    #33780289
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GlukOza wessen Vinni-pux
А мне надо чтобы поле было типа Date віводилось в таблице в виде dd.mm.yyyy

Отнаследуйся от класса Date и переопредели у него метод toString(). Соответственно в таблицу добавляй уже свой класс.


Первое я сделала. А как дабавить в таблицу свой класс. Мжет туплю страшно... Но все-таки...

как раньше класс Date добавляла, так и свой класс добавляй :)
...
Рейтинг: 0 / 0
Сортировка столбцов в JTable
    #33780374
GlukOza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как - то так:?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
  
           ResultSet rs = st.executeQuery("select sysdate from dual");

           MainDate  md =  new  MainDate();
            while (rs.next())  
           {
                 md = (MainDate)rs.getDate( 1 );
           }
    
...
Рейтинг: 0 / 0
Сортировка столбцов в JTable
    #33780757
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как нибудь так
Код: plaintext
1.
MainDate  md =  new  MainDate( rs.getDate(  1  ) );
...
Рейтинг: 0 / 0
Сортировка столбцов в JTable
    #33781705
GlukOza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юзай и все получится...

Решила свою проблему так. Так как сортировщик использует данные модели, то из запроса в модель данные типа Date так и сохраняю.

А когда вывожу таблицу пользователям, то как бы обманываю пользователей и на ячейку с таким полем вешаю TableCellRenderer, в котором данные форматирую с помощью SimpleDateFormat, который красиво выводит дату.

Когда пользователь нажимает на заголовок поля даты и хочет отсортировать поле, то здесь включается модель, в которой данные -то типа даты, а рисовальщик показывает в определенном формате.

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


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