Класс I18NDemo3 создает
Листинг 9.11. Класс I18NDemo3 создает экземпляр соответствующего класса пакета ресурсов для контекста рабочей региональной настройки. Ресурсы любого типа Java данного пакета легко доступны
import javax.microedition.midlet.MIDlet;
import javax.microedition.Icdui.Display;
import javax.microedition.Icdui.Displayable;
import ]avax.microedition.Icdui.Form;
import Java.util.Hashtable;
Третья версия приложения IlSNDemo.
<р>
Данная версия IlSNDemo использует пакет ресурсов для определения
локализованных ресурсов. Приложение определяет текущую региональную
настройку и пытается загрузить связанный с ней пакет, содержащий
соответствующие локализованные ресурсы. Если оно не может найти эти ресурсы,
оно загружает ресурсы U.S. English, представленные языком en_US и страной назначения.
<р>
Этот подход наиболее предпочтителен. Легко поддерживаются локализованные
ресурсы, отличные от строк.
*/
public class I18NDemo3 extends MIDlet
{
// Региональная застройка, указанная для выполнения
// данного МID-лета.
private String locale;
// Пакет ресурсов, который содержит локализованные ресурсы
// для выполнения данного приложения, private static ResourceBundle bundle;
{
// Displayable. Этот компонент отображается
// на экране.
private HelloForm3 form;
// Экземпляр Display. Этот объект управляет всеми
// компонентами Displayable для данного MID-лета.
private Display display;
// Экземпляр MID-лета.
private static !18NDerao3 instance;
/**
Конструктор No-arg.
*/
public I18NDemo3()
{
super();
instance = this;
}
/**
Получает экземпляр данного класса, который существует в действующем приложении.
@выдает экземпляр, созданный при запуске приложения.
*/
public static I18NDemo3 getlnstance()
{
if (instance == null)
{
instance - new I18NDemo3();
}
return instance;
}
/**
Получает пакет ресурсов, используемый данным MID-летом.
Этот метод полезен для других классов, которым необходим доступ
к локализованным ресурсам приложения.
@выдает локализованные ресурсы MID-лета.
*/
public static ListResourceBundle getResourceBundle ()
{
return (ListResourceBundle) bundle;
}
/**
Запускает MID-лет. Определяет текущую региональную настройку среды исполнения
и использует ее для создания имени пакета локализованных ресурсов. Использует
это имя для создания имени класса Java, который затем загружается с помощью
Class. Если нет соответствия пакету ресурсов, по умолчанию используется пакет
ресурсов U.S. English.
*/
public void startApp()
{
// Извлекает региональную настройку из программного обеспечения
// AMS.Региональная настройка должна быть установлена
// до выполнения данного MID-лета.
locale = System.getProperty("microedition.locale");
bundle = null;
cry
{
bundle =
ResourceBundle.getBundle("IlSNDemoResources", locale);
if (bundle == null)
{
bundle =
ResourceBundle.getBundle("IlBNDemoResources", "en_US");
}
}
catch (MissingResourceException mre)
mre.printStackTracef);
}
try
}
/ Создаем элемент Displayable. Получаем локализованную
// String, которая представляет заголовок Form.
String formTitle = (String)
bundle.getObject("title");
form = new HelloForm3(formTitle);
}
catch (MissingResourceException mre)
{
rare.printStackTrace();
}
// Это приложение просто отображает одну форму, созданную ранее, display = Display.getDisplay(this);
display.setCurrent(form);
}
/**
Выдает значение, связанное с указанным ключом из списка определяемых
пользователем ресурсов MID-лета в файле JAD приложения.
@param key Ключ пары ключ-значение.
@выдает значение, связанное с указанным ключом.
*/
public Object getResource(String key)
}
Object resource = null;
try
{
resource = bundle.getObject(key);
}
catch (MissingResourceException mre)
}
}
return resource;
/**
Выход из MID-лета. Уведомляет реализацию, что она
может прервать работу всех ресурсов приложения.
Реализация вызывает destroyApp().
*/
public void quit()
{
notifyDestroyed();
/*
public void destroyApp(boolean destroy)
{
{
public void pauseApp()
{
}
}
На рисунке 9.1 показано основное окно, созданное программой I18NDemo3 при ее запуске в региональной настройке en_US. Программа динамически извлекает локализованные ресурсы, описанные в листинге 9.9. На рисунке 9.2 показан экран меню того же приложения, запущенного в региональной настройке fr_FR, которая использует локализованные ресурсы, описанные в листинге 9.10. Код приложения I18NDemo3 абсолютно не изменяется. Он просто динамически определяет контекст региональной настройки при инициализации и загружает соответствующий пакет ресурсов.