![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Real McCoy |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 28.6.2007 Репутация: 2 Всего: 2 |
Подскажите, плз, направление для размышлений о такой проблеме: имеется таблица и другой контрол (не важно какой, у меня - панель с диаграммой), на котором отражаются результаты выбора строк таблицы. В таблице позволено выбирать как одиночные строки, так и множественные интервалы строк. Каким образом можно определить, что пользователь выбирает одну строку в таблице, а не добавляет строку к уже выбранным (с Ctrl или Shift)? Надо вешать MouseListener или ActionListener, или есть более правильные способы?
Код обработки выделения сейчас примерно такой: |
|||
|
||||
AlexeyVorotnikov |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 658 Регистрация: 18.6.2007 Где: Москва Репутация: 3 Всего: 18 |
А причём тут MouseListener или ActionListener? IMHO, всё, что нужно, надо делать в ListSelectionListener. По-моему, это самый правильный способ. -------------------- RTFM! Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification |
|||
|
||||
Real McCoy |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 28.6.2007 Репутация: 2 Всего: 2 |
Вопрос в том, чтобы определить, сделал ли пользователь просто левый клик на строке таблицы, т.е. выделил одну строку или сделал его с нажатым Ctrl или Shift, т.е. добавил новую строку к существующим выделенным строкам. Я не нашёл, чтобы с помощью ListSelectionListener (который у меня уже реализован), можно было различить разный характер выделения строк, потому и спросил. |
|||
|
||||
AlexeyVorotnikov |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 658 Регистрация: 18.6.2007 Где: Москва Репутация: 3 Всего: 18 |
Тогда, наверное, надо просто запоминать состояние выделения, и в ListSelectionListener'е сравнивать запомненное состояние выделения с тем, которое получается после соответствующего ивента.
Добавлено через 1 минуту и 7 секунд PS: А зачем нужно различать такие способы выделения? -------------------- RTFM! Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification |
|||
|
||||
Real McCoy |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 28.6.2007 Репутация: 2 Всего: 2 |
Видимо придётся запоминать статус выделения. А так хотелось простого и красивого решения
![]() Ну, например, в моём случае я делаю highlight элементов диаграммы, строки соответствующие которым выделяются пользователем в таблице. Управление осуществляется через контроллер, которому ListSelectionListener'ом шлётся ID выбранной записи с помощью PropertyChange. И мне надо как-то различать, когда на диаграмме надо сбросить подсветку всех подсвеченных элементов и выделить один новый, а когда добавить подсвеченный новый к остальным. |
|||
|
||||
nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 6 Всего: 31 |
Real McCoy, MyTable.getSelectedRowCount() тебе поможет.
![]() -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
Real McCoy |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 28.6.2007 Репутация: 2 Всего: 2 |
О! Точно! Опять упустил с самой поверхности...
Ещё одно спасибо, nornad! ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "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. |