![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Alone |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 11.5.2003 Где: Dnepropetrovsk, U A Репутация: 3 Всего: 6 |
Имеем
javax.swing.JTable refTbl; ... refTbl.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { {null, null, null, null, null}, {null, null, null, null, null}, {null, null, null, null, null}, {null, null, null, null, null}, {null, null, null, null, null}, {null, null, null, null, null}, {null, null, null, null, null}, {null, null, null, null, null}, {null, null, null, null, null}, {null, null, null, null, null} }, итд... В общем на экране есть таблица 10Х5 Далее , путем шаманских танцев с бубном вокруг сокета, получили набитый по уши Vector Каждый элемент вектора массив из 5 элементов. Вопрос: Как впихнуть в таблицу например первые 10 элементов из вектора Пытался делать что то наподобие :
получаем ошибку array required, but java.lang.Object found refTbl.setValueAt(curRow[i], k, i ); -------------------- |
|||
|
||||
| Sun |
|
|||
|
Account removed ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1611 Регистрация: 14.8.2002 Репутация: 8 Всего: 48 |
Может дело в этом объявлении
Object curRow=new java.lang.reflect.Array[5]; Здесь curRow объявлен массивом из пяти эллементов типа Array (а не Object). А тебе нужен массив объектов а не массив массивов. Поэтому и компилятор ругается. Тебе наверно лучше использовать что-то вроде Object[] curRow = new Object[5]; Это сообщение отредактировал(а) Sun - 7.8.2003, 18:44 -------------------- Account removed |
|||
|
||||
| DarkDS |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 748 Регистрация: 6.5.2003 Где: Таллинн, Эстония Репутация: 11 Всего: 16 |
Все делается намного проще
|
|||
|
||||
| Alone |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 11.5.2003 Где: Dnepropetrovsk, U A Репутация: 3 Всего: 6 |
если через датамодель, то насколько я понял это будет просто пересоздание таблицы, ток уже с новыми значениями ячеек?
-------------------- |
|||
|
||||
| DarkDS |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 748 Регистрация: 6.5.2003 Где: Таллинн, Эстония Репутация: 11 Всего: 16 |
Не обязательно... В общем погодь чутка
Это сообщение отредактировал(а) DarkDS - 7.8.2003, 18:59 |
|||
|
||||
| Alone |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 11.5.2003 Где: Dnepropetrovsk, U A Репутация: 3 Всего: 6 |
ладно, жду
а пока тут с примерами из постваки jdk поразбираюсь... -------------------- |
|||
|
||||
| DarkDS |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 748 Регистрация: 6.5.2003 Где: Таллинн, Эстония Репутация: 11 Всего: 16 |
Кстати... Вопрос... А не проще ли передавать Вектор, хранящий в себе какой либо класс с данными (то есть уже упорядочить данные)
Это сообщение отредактировал(а) DarkDS - 7.8.2003, 19:20 |
|||
|
||||
| DarkDS |
|
||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 748 Регистрация: 6.5.2003 Где: Таллинн, Эстония Репутация: 11 Всего: 16 |
Итак: Пишем небольшой класс Модели... Примерно такой:
В данном случае я воспользовался для простоты работы классом Сторедж (чтобы не работать на прямую с массивом)
Как будет происходить в данном случае работа с данными: Создается наша датамодель
Теперь в месте где получаем лист (кстати. Лудше работать с листами чем с вектором. У них скорость доступа меньше) мы можем либо добавить какое то количество строк, либо весь вектор сразу... Вот так:
Это сообщение отредактировал(а) DarkDS - 16.9.2003, 14:25 |
||||||||
|
|||||||||
| DarkDS |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 748 Регистрация: 6.5.2003 Где: Таллинн, Эстония Репутация: 11 Всего: 16 |
Все понятно? Нужны пояснения?
ЗЫ. Сорри.. Чутка ошибся во времени пути до дому... Дела появились... Это сообщение отредактировал(а) DarkDS - 7.8.2003, 22:45 |
|||
|
||||
| Alone |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 11.5.2003 Где: Dnepropetrovsk, U A Репутация: 3 Всего: 6 |
Да. Вопросы есть.
Код хороший, я понял его. Только зачем наследовать целый класс? Почему нельзя использовать JTable? В JTable я нашел метод, тот что мне надо: setValueAt(Object o, col, row); Он бы меня вполне устроил. Только вот, что за объект ему надо скормить для указанной ячейки? -------------------- |
|||
|
||||
| DarkDS |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 748 Регистрация: 6.5.2003 Где: Таллинн, Эстония Репутация: 11 Всего: 16 |
Вообще то нужно скормить обычный объект... А Наследовать целый класс - для простоты работы с содержимым таблицы. Тут ты можешь и имена столбцов выставить и если нужно чтобы данные редактировались - добавить 2-а метода и все (один метод показывает - редактируемая ли ячейка, а второй изменяет значени... Причем редактируемость можешь контролировать. К примеру сделать все столбцы кроме первого редактируемыми. И с данными тоже работать можешь как угодно
Да к тому же более "кошерно" работать с моделью данных, а не с таблицей... Тем более что таблица методом setValueAt(Object o, col, row); вызывает такой же метод у модели... И через таблицу напрямую столбец не добавишь. (в данном примере достаточно убрать if ( count < 10 )count = 10; и в начале таблица будет пустой, а после заполнения ее с помощю модели буду отображатся добавленные столбцы) Это сообщение отредактировал(а) DarkDS - 8.8.2003, 10:33 |
|||
|
||||
| Alone |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 11.5.2003 Где: Dnepropetrovsk, U A Репутация: 3 Всего: 6 |
УгУ... Однако хорошо сказано! Убедил.
Таки с меня пиво... [(_) И еше пиво... [(_) -------------------- |
|||
|
||||
| Alone |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 11.5.2003 Где: Dnepropetrovsk, U A Репутация: 3 Всего: 6 |
Кстати, а таблицу нужно лепить только на jScrollPanel? Или по барабану?
Если по барабану, то я не понял почему при добавлении таблицы на скроллпанель - имена столбцов есть, а если прилепить таблицу на JPanel, то она голая свсем... -------------------- |
|||
|
||||
| DarkDS |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 748 Регистрация: 6.5.2003 Где: Таллинн, Эстония Репутация: 11 Всего: 16 |
Все очень просто: Когда для показа столбцов реализован такой принцип, что заголовки показываются через специальный вьюпорт. В скрол панеле этот вьюпорт есть, а в обычной панеле нет. Так что лудше всего таблицу в скроле помещать... Если не нужно чтобы прокручивалось - поставь просто у скрола опцию NO_SCROLL
|
|||
|
||||
| Alone |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 11.5.2003 Где: Dnepropetrovsk, U A Репутация: 3 Всего: 6 |
Это понятно. я уже так и сделал.
Тут в другом вопрос...
что в этом неправильного потому что таблица не появилас, а в стдаут получено:
И еще: что бы выставить ширину стлобцов так как мне надо, мне пришлось сделать это
В принципе сработало, но хотелось бы мнение... Это сообщение отредактировал(а) Alone - 8.8.2003, 15:26 -------------------- |
||||||
|
|||||||
| DarkDS |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 748 Регистрация: 6.5.2003 Где: Таллинн, Эстония Репутация: 11 Всего: 16 |
Если переписано так как есть, без изменений, то тут чука по другому нада.
Я просто для удобства работы (и чтобы в листе хранить не массив, а обьект) сделал класс Storadge то есть тебе нужнно не так сделать
А насчет колумном... если не устраивает авторесайз... то только так... |
||||
|
|||||
| Alone |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 11.5.2003 Где: Dnepropetrovsk, U A Репутация: 3 Всего: 6 |
не.
Я хотел организовать хранение данных немного не так. {0,{"1","name","123","456","789"}} {1,{"2","name","123","456","789"}} ... {n,{"n","name","123","456","789"}} Так структура получше выглядит. Да и навигация по ней удобней... А в случае со стораджем +\- по одному элементу ... -------------------- |
|||
|
||||
| DarkDS |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 748 Регистрация: 6.5.2003 Где: Таллинн, Эстония Репутация: 11 Всего: 16 |
А кто мешает добавлять не один элемент в сторадж, а сразу массив?
Просто удобнее обычно брать из листов-векоторов один элемент и с ним работать... А что ты в этом элементе храть будешь - лист не волнует |
|||
|
||||
| DarkDS |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 748 Регистрация: 6.5.2003 Где: Таллинн, Эстония Репутация: 11 Всего: 16 |
Предупреждаю!
Это сообщение отредактировал(а) DarkDS - 8.8.2003, 17:56 |
|||
|
||||
| Alone |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 11.5.2003 Где: Dnepropetrovsk, U A Репутация: 3 Всего: 6 |
Да брось! и так очень помог!
Я на выходных тоже дома сидеть не буду. Если погода не подведет, удочку в зубы и на Днепр -------------------- |
|||
|
||||
| DarkDS |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 748 Регистрация: 6.5.2003 Где: Таллинн, Эстония Репутация: 11 Всего: 16 |
Появился...
|
|||
|
||||
| Alone |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 11.5.2003 Где: Dnepropetrovsk, U A Репутация: 3 Всего: 6 |
Реализовал таки я этот алгоритм, если есть возможность/желание может окинешь свежим взглядом?
Данные я храню в linkedList [num, name, phone1, phone2, phone3] есть форма добавления записи. Читаю все поля поочереди и добавляю в лист. Номер беру как list.size()+1; НО! Вот в чем грабли. Массив сторедж - это 5 объектов, соответсвенно, мой инт, который я ему пытаюсь подсунуть, он не воспринимает...
Что не есть хорошо. Как бы это сделать более по людски -------------------- |
|||
|
||||
| Alone |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 11.5.2003 Где: Dnepropetrovsk, U A Репутация: 3 Всего: 6 |
И еще вопрос по ходу:
Добавил на таблицу блоки прослушки клавы и мыши, а они "глухие"
-------------------- |
||||
|
|||||
| Alone |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 11.5.2003 Где: Dnepropetrovsk, U A Репутация: 3 Всего: 6 |
Я так понял еще чего то надо добавить... типа selectionModel() ?
-------------------- |
|||
|
||||
| DarkDS |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 748 Регистрация: 6.5.2003 Где: Таллинн, Эстония Репутация: 11 Всего: 16 |
По поводу первого вопроса: номер должен в таблице показыватся?
По поводу второго вопроса - а что ты хочешь сделать? |
|||
|
||||
| Alone |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 11.5.2003 Где: Dnepropetrovsk, U A Репутация: 3 Всего: 6 |
По первому вопросу - да. Номер должен присутствовать в таблице.
По второму - я хочу обрабатывать нажатие кнопки (мыши/клавы) на ячейке И не просто, а различать двойной/одинарный клик -------------------- |
|||
|
||||
| DarkDS |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 748 Регистрация: 6.5.2003 Где: Таллинн, Эстония Репутация: 11 Всего: 16 |
По первому вопросу:
Можно увеличить кол-во обьектов в сторадж на 1. Можно добавить 1 поле (нум... ) к примеру как стринг. (к примеру так:
Это сообщение отредактировал(а) DarkDS - 11.8.2003, 13:08 |
|||
|
||||
| DarkDS |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 748 Регистрация: 6.5.2003 Где: Таллинн, Эстония Репутация: 11 Всего: 16 |
Во втором случае правда придется изменить в датамоделе методы
и
|
||||
|
|||||
| DarkDS |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 748 Регистрация: 6.5.2003 Где: Таллинн, Эстония Репутация: 11 Всего: 16 |
А второй вопрос в отдельный топик с подробностями - какие события хочешь ловить (левая/правая кнопка мыши, нажатие каких клавишь?)
|
|||
|
||||
| Alone |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 11.5.2003 Где: Dnepropetrovsk, U A Репутация: 3 Всего: 6 |
За первое - спасибо!
второй вопрос уже в отдельном топике. -------------------- |
|||
|
||||
| repon |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 12.6.2006 Репутация: нет Всего: нет |
не могу обновить JScrollPane(с новой JTable) после запроса..
table = new JTable(model); sp= new JScrollPane(table); т.к. данные в JTable новвые.... а в JScrollPane - старая таблица. как обновить? Это сообщение отредактировал(а) repon - 16.12.2009, 14:33 |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |