|
|
|||||||
Поставить фокус в JOptionPane29.10.2013, 09:37. Показов 2178. Ответов 8
Метки нет (Все метки)
Передаю в JOptionPane поле для ввода пользователем данных, но по умолчанию фокус ставится в кнопку "ОК". Мне же надо поставить фокус в поле. На StackOverflow предложили переопределить у поля метод addNotify, добавив туда requestFocusInWindow();
Получилось что-то такое:
Есть ли способы сделать по-людски? Добавлено через 14 часов 51 минуту Нашел вот такую вот тему: http://bugs.sun.com/bugdatabas... id=5018574
0
|
|||||||
| 29.10.2013, 09:37 | |
|
Ответы с готовыми решениями:
8
Обработка событий. JoptionPane.showMessageDialog(...) || JOptionPane.showOptionDialog(...) || JDialog Как програмно поставить фокус на ячейку в JTable ? Как поставить фокус на Edit |
|
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
|
|
| 31.10.2013, 17:10 | |
|
Господи, ну напишите свой диалог ввода пароля! За то время, пока Вы решения ждете, уже бы отладили. Там же всё тривиально.
1
|
|
|
|
|||||||
| 31.10.2013, 17:13 [ТС] | |||||||
Или я что-то не так сделал?
0
|
|||||||
|
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
|
|
| 31.10.2013, 17:29 | |
|
Вы не поняли. Зачем показывать этот диалог в JOptionPane? Добавьте еще пару кнопок, положите в JDialog, сделайте его модальным.
P.S. SecurityManager - название неудачное. Это устоявшееся в Java понятие, так называется менеджер безопасности. Назовите PasswordDialog, это гораздо ближе к сути.
1
|
|
|
|
||||||
| 31.10.2013, 18:02 [ТС] | ||||||
|
Ага. Вроде получилось. Но у меня еще один вопрос. Сделал я вот такого зверька:
Но без команды dispose в строке 119 поток продолжает работать после того, как отработала последняя - 125 - строчка, т.е. объект продолжает висеть в памяти. Хотя вроде в 28 строке я сказал DISPOSE_ON_CLOSE Почему не срабатывает? Добавлено через 6 минут Я так догадываюсь, setVisible(false) он не считает закрытием?
0
|
||||||
|
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
|
||
| 01.11.2013, 10:28 | ||
|
Еще один момент. Неочевидно, что в getPassword Вы показываете диалог. Я бы сделал по другому немного. Диалог создается, показывается. У него есть внутри переменная типа boolean disposed = true; и метод isDisposed. По нажатию Cancel Вы просто вызываете dispose, по Ok записываете введенное значение и выставляете переменную в false, а потом уже dispose, по крестику окно просто закроется с dispose. После того, как управление вернулось в точку вызова, проверяете - if (!d.isDisposed()) и получаете пароль через getPassword, но вот это уже будет чистый getter без побочных эффектов. Зачем это надо. Вы у себя не различаете, введен пароль, или нет, Вы его всегда возвращаете. А поскольку изначальное значение - пустая строка, то разницы между cancel и пустым паролем Вы не увидите. Cancel - это отмена операции, а пустой пароль вообще-то имеет право на жизнь, т.е. обрабатываться эти ситуации должны по-разному.
1
|
||
|
|
||||||
| 01.11.2013, 10:56 [ТС] | ||||||
|
Получилось в итоге вот так (на случай, если кому пригодится):
Кликните здесь для просмотра всего текста
Я правильно понимаю, что я могу использовать d.getPassword() даже после dispose() потому, что ссылку из переменной d dispose() не убивает, а следовательно все поля формы все еще хранятся в памяти и не переданы GC? И еще вопрос: если я не сделаю в форме dispose(), я правильно понимаю, что даже после зануления переменной d форма останется в памяти, потому что она связана с какими-то внутренними функциями JVM?
0
|
||||||
|
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
|
|
| 01.11.2013, 12:13 | |
|
1. Да
2. Достоверно не скажу. Допускаю, что действительно остается в памяти.
0
|
|
| 01.11.2013, 12:13 | |
|
Помогаю со студенческими работами здесь
9
Как убрать/поставить фокус на элементе? Убрать фокус с элементов на форме, и поставить на форму Как поставить фокус на TextBoxe рассположенном на листе (не на форме)? JOptionPane
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|