|
Java форум JavaTalks форум программистов
|
|
|
|
| Предыдущая тема :: Следующая тема |
| Автор |
Сообщение |
goga : 2 Новичок Откуда: Минск
|
Мар 19, 2008 0:46 |
|
|
Доброго времени суток.
Мой вопрос состоит в следующем. Есть приложение с графическим интерфейсом, в частности есть меню. Как при выборе одного из пунктов меню поменять язык меню?
Этот вопрос размещаю в данной ветке форума, а не в Локализации, потому как меня также интересует способ перерисовки меню, в результате каких-либо действий. Если я не прав, то извините.
Вот код, который я использую:
| Код: |
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
public class RuEn extends JFrame {
private JRadioButtonMenuItem langs[];
private ButtonGroup langGroup;
public String language;
public String country;
public Locale currentLocale;
public ResourceBundle messages;
// GUI create
public RuEn() {
super("Inter");
// задаю парметры локали
// по умолчанию русский язык
language = new String("ru");
country = new String("RU");
setLocalisation(language, country);
// создаю меню с выбором языка
JMenu languageMenu = new JMenu(messages.getString("languageMenuIncription"));
// здесь с помощью messages.getString("")
// вызываю значения строк из файлов
String langNames[] = {messages.getString("Russian"),
messages.getString("English") };
langs = new JRadioButtonMenuItem[ langNames.length];
langGroup = new ButtonGroup();
// обработчик события переключения RadioButton
//реализован ниже
ItemHandler itemHandler = new ItemHandler();
for (int count = 0; count < langs.length; count++ ) {
langs[count] = new JRadioButtonMenuItem( langNames[count]);
languageMenu.add(langs[count]);
langGroup.add(langs[count]);
langs[count].addActionListener( itemHandler );
}
// Выбор первого элемента
langs[0].setSelected(true);
JMenuBar bar = new JMenuBar();
setJMenuBar(bar);
bar.add( languageMenu );
setSize(500,200);
setVisible(true);
}
// этот метод я пытаюсь использовать для изменения локали
public void setLocalisation(String language, String country) {
currentLocale = new Locale(language, country);
messages = ResourceBundle.getBundle("MessagesBundle", currentLocale);
}
private class ItemHandler implements ActionListener {
public void actionPerformed(ActionEvent event){
for ( int count = 0; count < langs.length; count++)
if ( (event.getSource() == "Russian") ||
(event.getSource() == "Русский") ){
// использование этого метода ничего не дает
setLocalisation("ru","RU");
} else {
setLocalisation("en","US");
}
repaint(); // в данном случае не помогает
}
}
public static void main(String[] args) {
RuEn application = new RuEn();
application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
} // end of main
} |
Результатом является вывод меню по умолчанию на русском языке, изменение радио кнопок ни к чему не приводит. В чем ошибка? |
|
|
|
 |
Майоров Павел : 1460 Java Developer
|
Мар 21, 2008 18:38 |
|
|
В методе setLocalization вы меняете поля currentLocale и messages, но где вы их после этого используете?
Нужно пройтись по всем пунктам меню и сменить названия на свежезагруженные. Это можно сделать
а) рекурсивно
б) через специальное событие
в) пересоздав интерфейс
Последний пункт - проще и кривее всего. |
|
|
|
 |
|
|
Страница 1 из 1
|
Список форумов
-> Локализация (l10n & i18n) |
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|