Платформа программирования J2ME для портативных устройств

Класс 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 абсолютно не изменяется. Он просто динамически определяет контекст региональной настройки при инициализации и загружает соответствующий пакет ресурсов.



Содержание раздела