Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: GUI и Java FX приложения > JPasswordField


Автор: maxlab 9.2.2007, 11:28
Здравствуйте уважаемые

Исходные данные таковы. ОС - Mandriva 2007 (2.6.17) +jdk6

Имеем форму от JDialog и на ней поле JPasswordField. Так вот... в линуксе переключение раскладки клавиатуры не влияет на это поле
Т.е. переключаюсь на русский алфавит, пишу в поле ... например олшилова , а в отладчике имею последовательность латинских символов, такую, как будто раскладка не переключалась. см приклееный рисунок. Чтобы это значило? В виндовозе все нормально...


Автор: diablero 9.2.2007, 11:45
а вы уверенны что она у вас вообще переключаеться?

Автор: maxlab 9.2.2007, 11:48
конечно...! я и на других линукс машинах проверял... у всех что ли переключение раскладки отвалилось   smile 

Автор: pdi_ 9.2.2007, 11:57
Аналогичная проблема. OS - Kubuntu 6.10 x86_64, jdk6. В jdk5 такого не было.

Автор: maxlab 9.2.2007, 12:04
Цитата(pdi_ @ 9.2.2007,  11:57)
Аналогичная проблема. OS - Kubuntu 6.10 x86_64, jdk6. В jdk5 такого не было.

Во...во... Я начинал свой проект тоже в 1.5 и таких странностей не замечал... а в 1.6 вылезло

Автор: pdi_ 9.2.2007, 12:14
Помнится у меня даже Netbeans 5.5 под линуксом раскладка в jdk6 перестала переключаться. Попробуй поставить переменные окружения LC_ALL и LANG в ru_RU.UTF-8 ну или в ru_RU.CP1251. 
$ LANG=ru_RU.UTF-8 LC_ALL=ru_RU.UTF-8 java -jar <jar-file-name>
Если заработает - пропиши их в /etc/profile (для bash).

Автор: maxlab 9.2.2007, 12:27
вот что дало выполнение команды printenv... Этого достаточно для правильной работы?

предыдущий совет не помогает  smile 

LC_PAPER=ru_RU.UTF-8
LC_ADDRESS=ru_RU.UTF-8
LC_MONETARY=ru_RU.UTF-8
LC_SOURCED=1
LC_NUMERIC=ru_RU.UTF-8
LC_TELEPHONE=ru_RU.UTF-8
LC_MESSAGES=ru_RU.UTF-8
LC_IDENTIFICATION=ru_RU.UTF-8
LC_COLLATE=ru_RU.UTF-8
LANG=ru_RU.UTF-8
LC_MEASUREMENT=ru_RU.UTF-8
LANGUAGE=ru_RU.UTF-8:ru
LC_CTYPE=ru_RU.UTF-8
LC_TIME=ru_RU.UTF-8
LC_NAME=ru_RU.UTF-8

Автор: pdi_ 9.2.2007, 12:42
А если так
$ LANG=ru_RU.CP1251 LC_ALL=ru_RU.CP1251 java -jar <jar-file-name>
У меня по-моему так было настроено.

Автор: maxlab 9.2.2007, 14:28
Неа... так тоже не работает
А средствами Ява можно перехватывать скан-коды клавиатуры? Может быть таким образом грабли можно будет обойти?

Автор: LSD 9.2.2007, 15:08
Цитата(maxlab @  9.2.2007,  14:28 Найти цитируемый пост)
А средствами Ява можно перехватывать скан-коды клавиатуры?

А раскладку клавиатуры как определить? Или всем использовать стандартную?

Думаю лучше просто дождаться апдейта JDK, а пока использовать старую.

Автор: maxlab 9.2.2007, 15:20
Цитата(LSD @ 9.2.2007,  15:08)
А раскладку клавиатуры как определить? Или всем использовать стандартную?


А раскладка здесь причем? Я так понимаю... есть клавиша и есть ее "координатный" скан-код... а нужную раскладку можно съемулировать программно. Хотя согласен заранее, что это извращение и лучше апдейта подождать. Но с другой стороны, я не нашел в баг-базе данных упоминания о таком поведении паспортного поля...Ни в какой версии. Т.е если это ошибка - то ее еще не засветили и апдейта долго придется ждать

Автор: w1nd 9.2.2007, 15:21
Не только в linux. И не факт, что это не фича. Нужно явно при конструкции JPasswordField это разрешить - см. метод enableInputMethods(). Я совсем недавно с этим столкнулся, когда делал индикатор раскладки.

Автор: maxlab 9.2.2007, 15:55
Ура! получилось! Спасибо w1nd... 
после InitComponents() что НетБинс нагенерил принудительно установил это свойство в true
и заработало. Хотя в документации написано что это свойство по дефолту в true стоит

Автор: w1nd 9.2.2007, 16:07
Цитата(maxlab @ 9.2.2007,  15:55)
Ура! получилось! Спасибо w1nd... 

Предлагаю это дело в FAQ воткнуть.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)