| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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 |
| конечно...! я и на других линукс машинах проверял... у всех что ли переключение раскладки отвалилось |
| Автор: pdi_ 9.2.2007, 11:57 |
| Аналогичная проблема. OS - Kubuntu 6.10 x86_64, jdk6. В jdk5 такого не было. |
| Автор: maxlab 9.2.2007, 12:04 | ||
Во...во... Я начинал свой проект тоже в 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... Этого достаточно для правильной работы? предыдущий совет не помогает 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 |
А раскладку клавиатуры как определить? Или всем использовать стандартную? Думаю лучше просто дождаться апдейта JDK, а пока использовать старую. |
| Автор: maxlab 9.2.2007, 15:20 | ||
А раскладка здесь причем? Я так понимаю... есть клавиша и есть ее "координатный" скан-код... а нужную раскладку можно съемулировать программно. Хотя согласен заранее, что это извращение и лучше апдейта подождать. Но с другой стороны, я не нашел в баг-базе данных упоминания о таком поведении паспортного поля...Ни в какой версии. Т.е если это ошибка - то ее еще не засветили и апдейта долго придется ждать |
| Автор: 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 | ||
Предлагаю это дело в FAQ воткнуть. |