![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Scatman |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 14.3.2006 Репутация: нет Всего: нет |
Можно ли в список в одну строку поместить и картинку и текст
|
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 38 Всего: 538 |
Можно, смотри в сторону ListCellRenderer.
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| powerOn |
|
||||||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 31 Всего: 159 |
Вот небольшой примерчик.
Определяем класс для элемента списка с картинкой.
Создаем свой ListCellRedender. отвечающий за прорисовку элементов списка.
пишем тестовый пример
|
||||||
|
|||||||
| Scatman |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 14.3.2006 Репутация: нет Всего: нет |
Всем спасибо помогли!!!!
|
|||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 31 Всего: 159 |
нЕзачто, заходи еще.
|
|||
|
||||
| MOFA |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 17.12.2006 Репутация: нет Всего: нет |
Все выше сказанное понятно, тоесть как это делать по готовому массиву данных. А как потом реализовать динамическое заполнение списка, например по нажатию кнопки? Помогите кто знает, а то уже пару дней мучаюсь. |
|||
|
||||
| BlackStar |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 134 Регистрация: 13.12.2006 Репутация: 2 Всего: 5 |
Можно использовать DefaultListModel или создать свою модель расширяя AbstractListModel.
|
|||
|
||||
| MOFA |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 17.12.2006 Репутация: нет Всего: нет |
Да, это тоже понятно, но так у меня получилось добавлять элементы одного типа, а как можно добавлять например иконку, а после нее текст (в одну строчку) ? |
|||
|
||||
| BlackStar |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 134 Регистрация: 13.12.2006 Репутация: 2 Всего: 5 |
Так все тоже самое, только вместо строк добавляй указынный выше ImageListElement.
ЗЫ. Естесственно при этом нужно также использовать ListCellRedender к нему. |
|||
|
||||
| powerOn |
|
||||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 31 Всего: 159 |
плохо понимаю проблему. У списка есть модель - это данные. У списка есть рендерер - это способ отображения данных. Вы вправе менять данные как хотите и рендерер как хотите. Лишь бы они были согласованы. Если нужно поменять количество элементов - то меняйте модель, если нужно что бы элементы списка отображались иначе - то меняйте рендерер.
Измените модель. Напимер создайте другой массив с элементами ImageListCellsRedender() и установите его jList-у. Можете поменять "контейнер": вместо массива использовать Vector. Можете написать свой класс для элемента списка вместо ImageListCellsRedender, но он должен быть согласован с рендерером. |
||||
|
|||||
| MOFA |
|
||||||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 17.12.2006 Репутация: нет Всего: нет |
Я делаю это так:
ReportListElement.java
ReportListCollection.java
ReportListModel.java
ReportListRenderer.java
Юзаю так:
И это не работает |
||||||||||
|
|||||||||||
| powerOn |
|
||||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 31 Всего: 159 |
так, код ваш запустил. у меня все работает
В коде окна, использовал:
|
||||
|
|||||
| MOFA |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 17.12.2006 Репутация: нет Всего: нет |
ОК, так у меня тоже заработало, но мне нужно добавлять элементы по событию, тоесть я изнпчально не знаю всю модель.
Как это реализовать? Сейчас я написал так:
При этом выводиться в список только первое сообщение, а потом все пропадает и ничего не выводиться. |
|||
|
||||
| MOFA |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 17.12.2006 Репутация: нет Всего: нет |
Нашел решение:
Огромное спасибо за помощь powerOn!!! |
|||
|
||||
| Hidrag |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 877 Регистрация: 9.4.2005 Где: JDK Репутация: 2 Всего: 25 |
А как сделать если нужна не одна а две или более иконок в одной строчке с текстом? Решение найдено Это сообщение отредактировал(а) Hidrag - 25.4.2007, 17:22 -------------------- |
|||
|
||||
| filipp76 |
|
||||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 241 Регистрация: 4.4.2007 Где: Украина, Киев Репутация: 1 Всего: 1 |
Подниму эту тему чтоб не начинать новую. Как в данном случае получить текст из JList?
Добавляю элементы так
Все добавляется без проблем, но вот как при необходимости достать текст оттуда так и не понял. Может это не логично но пробовал так - в класс ImageListElement добавил метод
Дальше
После чего собирался своим методом забирать текст, но не работает, ругается на не совместимость типов. Но я не могу понять почему!! тогда эта строка работает, ведь тут в качестве параметра надо отдавать Object, почему же я его обратно забрать не могу??? Подскажите пожалуйста, прошу строго не судить мой метод...), я только учусь..)
Это сообщение отредактировал(а) filipp76 - 19.5.2007, 19:29 |
||||||||
|
|||||||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 31 Всего: 159 |
Как это ты так, к не статическому полю обращаешься из статического метода? Но в целом идея правильная. Если ругается на тип, то попробуй явное приведение. Или перепиши классы с использованием generic. |
|||
|
||||
| filipp76 |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 241 Регистрация: 4.4.2007 Где: Украина, Киев Репутация: 1 Всего: 1 |
Поле сделал статическим. Тут отладчик сработал как надо и тыкнул меня носом Я бы с радостью, но как? Не знаю как это делается. Про generic, вообще первый раз слышу..(( Нашел инфу про это тут - enericsinjava, но успел прочитать только раз и толком ничего не понял Мне кажется что явное приведение типов мне поможет, скорей всего с этим мне кажется легче будет разобратся, только подскажите пожалуйста как это делается. P.S. Я никак не могу понять почему
Это сообщение отредактировал(а) filipp76 - 20.5.2007, 00:54 |
||||
|
|||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 31 Всего: 159 |
||||
|
||||
| filipp76 |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 241 Регистрация: 4.4.2007 Где: Украина, Киев Репутация: 1 Всего: 1 |
Спасибо, работает!
У меня почти все методы статические, это наверно частая ошибка новичков. Объясню почему. У меня есть класс А, в нем есть private поле mas[][](тип не важен), я хочу получать длинну масива из любого класса, для этого пишу метод
Но с других классов у меня этого метода не видно..пока я не сделаю его статическим, при этом конечно вылазит ошибка что mas не объявлен как static, потому мне и его приходится делать статическим. В чем моя ошибка? Кстати в данном случае все нормально, убрал статик перед полем и методом, все работает. |
||||||
|
|||||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 31 Всего: 159 |
Значит у вас либо метод, либо поле объявлено как static. Уберите его и с метода и с поля. Из статического метода нельзя обращаться к не статическим данным. Статические данные общие для всех экземпляров данного класса. Они не привязаны к конкретному объекту. Еще рекомендую прочитать главу об этом в учебнике. Объявите так:
|
|||
|
||||
| filipp76 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 241 Регистрация: 4.4.2007 Где: Украина, Киев Репутация: 1 Всего: 1 |
Все поправил, спасибо!
|
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |