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

         

Данная версия IlSNDemo использует пакет


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


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