Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Активация / деактивация отдельных элементов в JList / 17 сообщений из 17, страница 1 из 1
19.03.2014, 13:45
    #38590568
Полуламер
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Активация / деактивация отдельных элементов в JList
Всем доброго. Пытался сделать такое - например, кликаешь на определенном элементе в JList и от этого все прочие должны становиться серыми и недоступными (некликабельными). Нормального примера в сети найти не удалось, знаю лишь, что тут надо использовать DefaultListCellRenderer и свойство списка setCellRenderer, но у самого сконструировать аткое не получается. Хотелось бы, чтобы рендео выглядел примерно так же, как этот простой, убирающий выделение и фокус во всем списке:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
        stringValuesList.setCellRenderer(new DefaultListCellRenderer() {
            public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {

                 super.getListCellRendererComponent(list, value, index, false, false);

                }
                return this;
            }
        });


Очень рассчитываю на чью-нибудь помощь.
...
Рейтинг: 0 / 0
19.03.2014, 13:58
    #38590593
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Активация / деактивация отдельных элементов в JList
код за вас написать? Или что именно у вас не получилось?
Вам нужно проверить, если есть хоть один выбраный, элемент, то вызывать ваш код, если нет, то только super метод.
В вашем коде раскрашивать в соответствии с аргументом isSelected.
...
Рейтинг: 0 / 0
19.03.2014, 16:25
    #38590893
Полуламер
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Активация / деактивация отдельных элементов в JList
Blazkowiczкод за вас написать?
Ну, положим, код целиком за меня писать не надо, но поскольку опыта при низкоуровневом использовании java GUI у меня практически нет, как нет его и в написании рендеров, то хотелось бы видеть намек из пары строк. А там, глядишь, остально сам додумаю, Вы очень хорошо всегда объясняете.
...
Рейтинг: 0 / 0
19.03.2014, 17:09
    #38590982
For All
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Активация / деактивация отдельных элементов в JList
CellRenderer-ом можно добиться того, чтобы рзные элементы списка по разному отображались, но они по-прежнему останутся кликабельными. Т.е. если даже и нарисовать их серыми - жмакнуть по ним можно будет, и текущее выделение изменится
...
Рейтинг: 0 / 0
19.03.2014, 17:11
    #38590986
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Активация / деактивация отдельных элементов в JList
ПолуламерНу, положим, код целиком за меня писать не надо, но поскольку опыта при низкоуровневом использовании java GUI у меня практически нет, как нет его и в написании рендеров, то хотелось бы видеть намек из пары строк. А там, глядишь, остально сам додумаю, Вы очень хорошо всегда объясняете.
Ну, вы правильно начали. Я вам описал что добавить в код приведенный выше. Пробуйте.
...
Рейтинг: 0 / 0
19.03.2014, 17:12
    #38590992
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Активация / деактивация отдельных элементов в JList
For AllCellRenderer-ом можно добиться того, чтобы рзные элементы списка по разному отображались, но они по-прежнему останутся кликабельными. Т.е. если даже и нарисовать их серыми - жмакнуть по ним можно будет, и текущее выделение изменится
+1
Правда, если это так, то постановка задачи какая-то странная. Выбрать можно только один раз. Не попал в нужный элемент, значит не судьба.
...
Рейтинг: 0 / 0
27.03.2014, 12:38
    #38597956
Полуламер
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Активация / деактивация отдельных элементов в JList
В общем-то сделал как хотел, немножко поковырявшись в интернете и справившись с собственной тупостью. Есть несколько иной вопрос, хотя и связанный с JList и их раскраской. Значит, их несколько, заполняются на этапе initComponents(), там же устанавливаются и "разноцветные" рендеры, ну то есть выглядит примерно так:

Код: java
1.
2.
3.
4.
5.
6.
7.
private void initComponents() {
// JFormDesigner - Component initialization - DO NOT MODIFY  //GEN-BEGIN:initComponents
...
private JList stringValuesList;
...
stringValuesList.setCellRenderer(new BoldItemListCellRenderer());
}


Но вот никак не получается сделать так, чтобы списки высветились сразу во всей разноцветной красе. То есть если на них кликнуть, то все отлично отображается, а автоматика не работает, пробовал setSelectedIndex(0) - активизируется самый последний, т.е. получается, что кликнули как бы только на нем, repaint() тоже не принес результатов. Можно ли организовать такое?
...
Рейтинг: 0 / 0
27.03.2014, 12:48
    #38597973
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Активация / деактивация отдельных элементов в JList
Полуламер,

Весь код где используется stringValuesList покажите.
...
Рейтинг: 0 / 0
27.03.2014, 13:02
    #38597995
Полуламер
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Активация / деактивация отдельных элементов в JList
Он в очень многих местах используется, не совсем понятно, что нужно показать. Касательно блока initComponents():

Код: java
1.
2.
3.
if (...) {
  setEditableValues(); // здесь идет заполнение из БД, если условие выполнено
}


А в setEditableValues() ничего крамольного, там для разных списков:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
switch (...) {

...

case STRING_VALUES_DATA: {

  stringValuesList.setSelectedIndex(0);        

}

break;
  
}



и никакого результата - вернее, если не делать setSelectedIndex(0) для других списков, то тогда этот "кликнется".
...
Рейтинг: 0 / 0
27.03.2014, 13:10
    #38598005
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Активация / деактивация отдельных элементов в JList
Как создаётся экземпляр stringValuesList? Как в него попадают данные?
...
Рейтинг: 0 / 0
27.03.2014, 13:17
    #38598027
Полуламер
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Активация / деактивация отдельных элементов в JList
BlazkowiczКак создаётся экземпляр stringValuesList?
Это элемент формы, сгенерированный JFormDesigner в IntelliJ.

Как в него попадают данные?

Примерно так:

Код: java
1.
2.
3.
4.
5.
DefaultListModel model = new DefaultListModel();

model.addElement(paramName);

stringValuesList.setModel(model);
...
Рейтинг: 0 / 0
27.03.2014, 13:24
    #38598046
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Активация / деактивация отдельных элементов в JList
ПолуламерЭто элемент формы, сгенерированный JFormDesigner в IntelliJ.

Вот в этом и проблема. Вам дизайнер что-то сгенерировал, а вы теперь не знаете в каком оно порядке выполняется.

ПолуламерПримерно так:

В том то и дело, что "примерно".

У вас есть вот такой набор операций, но ни вы, ни я не знаем в каком порядке они все выполняются. А порядок в императивном языке таки на что-то влияет.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
stringValuesList = new JList();//Создаём с дефолтной моделью.

DefaultListModel model = new DefaultListModel(); //Делаем модель

frame.setVisible(true);//Делаем всё видимым

stringValuesList.setModel(model);//Заменяем модель

parent.add(stringValuesList);//Добавляем в контейнер

stringValuesList.setCellRenderer(new BoldItemListCellRenderer());//Создаём свой cell renderer.
...
Рейтинг: 0 / 0
27.03.2014, 13:32
    #38598059
Полуламер
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Активация / деактивация отдельных элементов в JList
Но все же решающим моментом явлется присваивание рендера, это ведь он раскрашивает списки. В какой момент его нужно присваивать?
...
Рейтинг: 0 / 0
27.03.2014, 13:38
    #38598064
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Активация / деактивация отдельных элементов в JList
ПолуламерНо все же решающим моментом явлется присваивание рендера, это ведь он раскрашивает списки. В какой момент его нужно присваивать?
До того как компонент показан на видимом окне.
...
Рейтинг: 0 / 0
27.03.2014, 13:46
    #38598080
Полуламер
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Активация / деактивация отдельных элементов в JList
Понятно. А можно отловить это событие, есть какое-то onShow или onVisible для диалога в Java?
...
Рейтинг: 0 / 0
27.03.2014, 15:14
    #38598196
For All
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Активация / деактивация отдельных элементов в JList
А если установку своего рендерера сделать ДО того, как список добавляется в контейнер (в примере выше)? Может так заработает?
...
Рейтинг: 0 / 0
27.03.2014, 16:52
    #38598314
DDiver
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Активация / деактивация отдельных элементов в JList
For All,
рендерер вроде вызывается в момент отрисовки компонента, и нет никакой разницы до установки модели он присвоен компоненту или после, главное до показа компонента. если не ошибаюсь
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Активация / деактивация отдельных элементов в JList / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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