Допустим, что язык по-умолчанию в Windows у нас английский. Нам надо сделать так, чтобы при запуске приложения J2SE оно переключало раскладку клавиатуры на русский язык.
Возможно ли такое и как.
Здравствуйте, Gog, Вы писали:
Gog>Допустим, что язык по-умолчанию в Windows у нас английский. Нам надо сделать так, чтобы при запуске приложения J2SE оно переключало раскладку клавиатуры на русский язык. Gog>Возможно ли такое и как.
Здравствуйте, denis.zhdanov, Вы писали:
DZ>Здравствуйте, Gog, Вы писали:
Gog>>Допустим, что язык по-умолчанию в Windows у нас английский. Нам надо сделать так, чтобы при запуске приложения J2SE оно переключало раскладку клавиатуры на русский язык. Gog>>Возможно ли такое и как.
DZ>здесь
Я прочитал все эти топики, прежде чем создавать свой
Там дается ответ на немного другой вопрос — как изменить язык ввода у компонента.
Мне же надо изменить язык для всего приложения. Чтобы во всех компонентах по умолчанию был русский язык.
При создании приложения делал
JFrame.setLocale(RussianLocal)
JFrame.getContentPane().setLocale(RussianLocal)
MainPanel.setLocale(RussianLocal)
MainPanel.getInputContext().selectInputMethod(RussianLocal)
Не помогает
Есть ли какой-то другой способ.
Re[3]: Установка языка при запуске J2SE приложения
Здравствуйте, Gog, Вы писали:
Gog>Я прочитал все эти топики, прежде чем создавать свой
Gog>Там дается ответ на немного другой вопрос — как изменить язык ввода у компонента.
Gog>Мне же надо изменить язык для всего приложения. Чтобы во всех компонентах по умолчанию был русский язык. Gog>...
Как-нить так?
public static void main(String[] args) throws Exception {
JFrame frame = new JFrame();
...
iterate(frame);
}
private void iterate(Container root) {
// Apply rules for current component.for (Component component : root.getComponents()) {
if (component instanceof Container) {
iterate((Container) component);
}
}
}
Здравствуйте, denis.zhdanov, Вы писали:
DZ>Даже не совсем так. Надо применять и для дочерних компонентов — не контейнеров, т.е. так:
DZ>
DZ> private void iterate(Container root) {
DZ> // Apply rules for current root.
DZ> for (Component component : root.getComponents()) {
DZ> if (component instanceof Container) {
DZ> iterate((Container) component);
DZ> } else {
DZ> // Apply rules for current component.
DZ> }
DZ> }
DZ>
denis.zhdanov, спасибо.
Но тут два момента.
1. Но что если у нас очень большое приложение. Появляются очень много всяких формочек, таблиц. Нам придется вызывать прописывать эту функцию в каждом таком случае.
2. Что если пользователю надо написать что-то по английски, который является этот момент текущим языком в виндах. Тогда ему придется нажимать ctrl+shift 2 раза — путаница получится.
Неужели нету никакого метода Application.SetLanguage(Russian).
Ведь каждое Windows-приложение помнит свой язык.
Re[6]: Установка языка при запуске J2SE приложения
Здравствуйте, Blazkowicz, Вы писали:
B>Здравствуйте, Gog, Вы писали:
Gog>>Ведь каждое Windows-приложение помнит свой язык. B>Но не каждое Java-приложение — Windows-приложение.
Здравствуйте, Gog, Вы писали:
Gog>Допустим, что язык по-умолчанию в Windows у нас английский. Нам надо сделать так, чтобы при запуске приложения J2SE оно переключало раскладку клавиатуры на русский язык. Gog>Возможно ли такое и как.
Locale.setDefault(new Locale("ru", "RU"));
... << RSDN@Home 1.2.0 alpha rev. 780>>
"Мы будем уничтожать свое ядерное оружие вместе с Америкой" (c) Б. Ельцин
Re[2]: Установка языка при запуске J2SE приложения
Нашел где-то вот такое решение проблемы, сделал по аналогии, но не работает
There are two ways to change the default locale. The first is to set it on the command line:
> java -Duser.language=2-char-language-code -Duser.region=2-char-country-code MyApp
// Set only language code > java -Duser.language=fr -Duser.region= MyApp
// Set language and country code > java -Duser.language=fr -Duser.region=CA MyApp
The second way to change the default locale is to call Locale.setDefault():
// Get default locale
Locale locale = Locale.getDefault();
// Set the default locale to pre-defined locale
Locale.setDefault(Locale.FRENCH);
// Set the default locale to custom locale
locale = new Locale("fr", "CA");
Locale.setDefault(locale);
В общем не получается установить язык по-умолчанию при запуске J2SE приложения (нужен русский).
На какое-то время я пытался забить на это, но всплыла еще одна проблема. Хотелось бы решить хотя бы ее.
Суть вот в чем. Допустим к нас есть приложение, в котором по кнопочками открываются диалоговые окна.
Так вот
1. при запуске программы у нас язык EN
2. мы заходим в диалоговое окно, начинаем какую-то работу, меняем язык на RU.
3. закрываем это диалоговое окно и тут происзодит следущее — язык ввода автоматически возвращается обратно в EN
4. если мы хотим что-то еще подредактировать, то у нас большая проблема. Мы минуту назад переключали раскладку клавиатуры на русскую, а она у нас английская. И нам надо опять переключать.
2 вопроса.
1. Если вернуться к предыдущему обсуждению. Может кто-то точно знает, возможно ли установить язык по-умолчанию при запуске приложения.
2. Как быть с только что описанной проблемой. Я хочу, чтобы в каком бы диалоговом окне я бы ни менял раскладку, чтобы это было на всё приложение, а не только на текущее окно.
Re[3]: Установка языка при запуске J2SE приложения
Gog>3. закрываем это диалоговое окно и тут происзодит следущее — язык ввода автоматически возвращается обратно в EN Gog>4. если мы хотим что-то еще подредактировать, то у нас большая проблема. Мы минуту назад переключали раскладку клавиатуры на русскую, а она у нас английская. И нам надо опять переключать.
Использовал подобное в старых Delhi проектах.
Можно попробовать через jni воспользоваться Win API функцией для смены раскладки клавиатуры
Re[4]: Установка языка при запуске J2SE приложения
Может я не совсем ясно описал проблему, попробую еще раз.
Суть вот в чем. Допустим в нашем приложении по кнопочкам открываются диалоговые окна.
Так вот
1. при запуске программы у нас язык EN
2. мы заходим в диалоговое окно, начинаем какую-то работу, меняем язык на RU.
3. закрываем это диалоговое окно и тут происходит следущее — язык ввода автоматически возвращается обратно в EN
4. если мы хотим что-то еще подредактировать, то у нас большая проблема. Мы минуту назад переключали раскладку клавиатуры на русскую, а она у нас английская. И нам надо опять переключать.
Можно ли как-то сделать так, чтобы смена языка в любом из дочерних окон приложения приводила к смене языка для всего приложения.
Re[5]: Установка языка при запуске J2SE приложения
Здравствуйте, Gog, Вы писали:
Gog>1. при запуске программы у нас язык EN Gog>2. мы заходим в диалоговое окно, начинаем какую-то работу, меняем язык на RU. Gog>3. закрываем это диалоговое окно и тут происходит следущее — язык ввода автоматически возвращается обратно в EN Gog>4. если мы хотим что-то еще подредактировать, то у нас большая проблема. Мы минуту назад переключали раскладку клавиатуры на русскую, а она у нас английская. И нам надо опять переключать.
По-моему это такая виндозная фича — привязывать раскладку к окнам. Чтобы забороть придется искать способы манипулировать переключателем из Java.
Re[6]: Установка языка при запуске J2SE приложения
Здравствуйте, Blazkowicz, Вы писали:
B>По-моему это такая виндозная фича — привязывать раскладку к окнам. Чтобы забороть придется искать способы манипулировать переключателем из Java.
Все диалоги я сделал setModal(true) и присвоил им owner к родительскому окну.
Т. е. они всегда показываются поверх родительского окна, в диспетчере задач, на панели задачач, при нажатии Alt-Tab выглядит как одно приложение, но почему-то изменение языка в диалоговом окне не влечет изменение языка в родительском.
Здравствуйте, Gog, Вы писали:
Gog>Допустим, что язык по-умолчанию в Windows у нас английский. Нам надо сделать так, чтобы при запуске приложения J2SE оно переключало раскладку клавиатуры на русский язык. Gog>Возможно ли такое и как.
Это, конечно, не мое дело, но, имхо, приложение, самопроизвольно пытающееся переключать раскладки, будет весьма нервировать пользователей.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Re[7]: Установка языка при запуске J2SE приложения
Здравствуйте, Gog, Вы писали:
Gog>Все диалоги я сделал setModal(true) и присвоил им owner к родительскому окну. Gog>Т. е. они всегда показываются поверх родительского окна, в диспетчере задач, на панели задачач, при нажатии Alt-Tab выглядит как одно приложение, но почему-то изменение языка в диалоговом окне не влечет изменение языка в родительском.
Сабмить багу на http://bugs.sun.com/
Подтверждаю у меня Java 6 и такая же фигня.