Платформа J2Me
Платформа J2Me читать книгу онлайн
Эта книга научит вас, как разрабатывать программное обеспечение для платформы J2ME компании «Sun Microsystems». Эта книга придерживается стиля учебного пособия, это не справочное руководство.
Цель — дать вам твердую основу в понятиях и техниках, которая даст вам возможность решиться на самостоятельную разработку качественных приложений.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
Конструктор No-arg.
*/
public I18NDemoResources_en_US()
{
super();
}
public Object ij[] getContents()
{
return contents;
}
// Необходим статический инициализатор для инициализации
// переменных, которые не могут быть инициализированы в
// массиве содержимого. Например, мы не можем выделить что-либо
// в массиве содержимого для создания изображения и,
// выполнить требуемую обработку исключений.
static
{
try
{
applcon = Image.createlmage("i!8n-en_US.png");
}
catch (lOException ioe)
{
System.оut.println(ioe.getMessage)));
ioe.printStackTrace();
}
}
}
Классы, которые определяют локализованные ресурсы для других региональных настроек, должны создавать подкласс непосредственно класса ListResourceBundle. В листинге 9.10 показан подкласс, содержащий ресурсы, локализованные под французский язык. Единственное усилие, требующееся для создания этого класса, — это изменение суффикса имени класса и редактирование текстовых строк. За исключением имени и значений атрибутов класс идентичен англоязычной версии.
Если класс определяет другие ресурсы кроме текстовых строк, тогда при создании экземпляра класса должны быть созданы объекты, соответствующие региональной настройке. Последний объект в списке является примером нетекстового ресурса, который инициализируется при создании экземпляра класса. Класс использует статический инициализатор Java для создания экземпляра статических нестроковых объектов при загрузке класса. Наша программа должна использовать статический инициализатор, потому что каждый класс локализованного ресурса создает определяемое региональной настройкой изображение.
Листинг 9.10. Ресурс каждой региональной настройки определяется в своем собственном соответствующем подклассе ListResourceBundle. Данный подкласс определяет атрибуты, локализованные для франкоязычного региона
import javax.microedition.lcdui.Image;
import Java.io.lOException;
/ **
Класс, представляющий локализованные ресурсы для французского языка региона Франции.
Обратите внимание на использование последовательностей переключения уникода в строковых литералах. Использование последовательностей переключения уникода в строковых литералах означает, что мы можем записать этот файл с помощью одних только символов ASCII, делая его эксплуатацию более легкой. Легко добавлять комментарии для создания удобочитаемых строк.
*/
public class I18NDemoResources_fr_FR
extends ListResourceBundle
{
// Содержит один из локализованных ресурсов. Нам необходимо
// инициализировать данную переменную в статическом
// инициализаторе данного класса.
private static Image applcon;
private Object [][] contents =
{ {"title", "AlluOOf4, tout le Monde"), // Form title.
// Создаем текст: "My third MIDlet". ("greeting", "Mon troisiuOOe8me MIDlet"),
// «Кнопка была нажата» ("Button was Pressed").
{"alert_title", "Bouton a uCOe9tuOOe9 pressuOOe9"),
// «Кнопка была нажата» ("The button was pressed").
{"alert_text", "Le bouton a uOOe9tuOOe9 pressuOOe9!"},
("exit", "Sortie"), // Пункт меню «Выход» ("Exit").
("menu", "Menu"), // Экранная клавиша «Меню» ("Menu").
("cancel", "Quitter"), // Пункт меню «Отмена» ("Cancel").
("stop", "Arreter"), // Пункт меню «Стоп» ("Stop").
("ok", "OK"), // Пункт меню «OK».
("alert", "Alerte"), // Экранная клавиша «Уведомление» ("Alert").
i" sayhi","Dis bonjour"), // Пункт меню «Скажи- привет» ("Say Hi").
("screen", "Ecran"), // Пункт меню «Экран» ("Screen").
{"item", "Item"), //.Пункт меню «Предмет» ("Item").
("help", "Aider"), // Пункт меню «Помощь» ("Help").
("app_icon", applcon) // Значок приложения.
};
/**
Конструктор No-arg.
*/
public I18NDemoResources_fr_FR()
{
super();
/**
Получает содержимое пакета ресурсов.
@возвращает массив пар ключ-значение.
public Object [][] getContents()
{
return contends;
}
// Обратите внимание, что статический инициализатор создает
// экземпляры класса Image с другими изображениями, нежели он
// использует в региональной настройке en_US. static
{
try
{
applcon = Image.createlmage("i!8n-fr_FR.png");
}
catch (lOException ioe)
{
System.out.printIn(ioe.getMessage());
io.e.printStackTracel);
}
}
}
В листинге 9.11 показана программа I18NDemo3, которая использует данный набор классов пакетов ресурсов. Метод startAppO данного MID-лета создает экземпляр соответствующего класса пакета ресурсов. Он создает имя класса, связывая базовое имя семейства файлов локализованных ресурсов, I18NDemoResources, с конечной региональной настройкой. С помощью всего лишь нескольких операторов приложение получает доступ ко всем локализованным ресурсам.
Листинг 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;
}
/**
