Программирование мобильных телефонов на Java

ремонт стиральных машин Алтуфьево тут


6.7. Класс Font



При формировании приложения программисту всегда хочется улучшить его внешний вид и кроме обилия компонентов, создающих списки, таблицы, бегущие строки, еще имеется класс Font; с помощью которого можно задавать шрифт для текста. Телефоны имеют ограниченные системные ресурсы, поэтому доступно всего несколько шрифтов, которые отличаются по размеру, начертанию, стилю и задаются при помощи констант.



Рис 6.13. Загрузка изображения классом image


Размер шрифта устанавливается при помощи трех констант:

  •  int SIZE_LARGE - большой шрифт;
  •  static int SIZE_MEDIUM - средний шрифт;
  •  static int SIZE_SMALL — маленький шрифт.


Cтиль можно задавать четырьмя константами:

  •  static int STYLE_BOLD - жирный шрифт;
  •  static int STYLE_ITALIC - курсив;
  •  static int STYLE_PLAIN - обычный шрифт;
  •  static int STYLE_UNDERLINED-подчеркнутый шрифт.


Начертание шрифта определяется тремя константами:

  •  static int FACE_MONOSPACE - шрифт с небольшим интервалом;
  •  static int FACE_PROPORTIONAL - пропорциональный шрифт;
  •  static int FACE_SYSTEM - системный шрифт.


В профиле MIDP 1.0 возможность установки различных шрифтов в приложении имелась только при использовании класса Graphics и метода setFont (). В профиле MIDP 2.0, уже имеется возможность установки шрифта без использования класса Graphics, только при помощи методов из состава классов пользовательского интерфейса. Процесс назначения шрифта текста в программе происходит следующим образом. Вначале создается переменная, которая будет содержать размер, стиль и начертание шрифта, установленные при помощи метода getFont () класса Font например:

Font myFont = Font.getFont(Font.FACE_SYSTEM,
Font.STYLE_BQLD, Font. SI ZE_LARGE) ;


Переменная myFont теперь содержит шрифт, который можно назначит любому тексту в программе. В профиле MIDP 2.0 для этого достаточно вызвать метод setFont () с необходимыми параметрами. В профиле MIDP 1.0 для назначения шрифта тексту, необходимо использовать класс Graphics, в главе 6 рассматривается эта возможность.

В примере к этому разделу будет задействован класс List, создающий список элементов. При создании на экране списка из четырех элементов, каждому элементу будет назначен свой шрифт. В листинге 6.12 содержится код примера создающего различные шрифты элементам списка.

/**
Листинг   6.12
Класс  Font
*/
 import   javax.microedition.midlet. *;
import* javax.microedition.Icdui.*;
public  class   
 MainClassFont  extends MIDlet  implements
CommandListener
{
// команда выхода из приложения
private Command exitMidlet = new Command("Выход",
Command.EXIT, 0);
// массив иконок
Image[] icon = null; x
// объект класса List
private List mylist;
// объект mydisplay представляет экран телефона
private Display mydisplay;
public MainClassFont()
{
mydisplay = Display.getDisplay(this);
}
public void startApp()
{
// перехватываем исключительную ситуацию
try{
// загрузка изображения
Image imaged = Image.createlmage("/icon0.png");
Image imagel = Image.createlmage("/icon1.png");
Image image2 = Image.createlmage("/icon2.png");
Image image3 = Image.createlmage("/icon3.png");
// поместить загруженные изображения в массив icon
icon = new Image[]{ image0, image1, image2, image3};
}
catch(Java.io.IOException ex){ }
// текст для четырех элементов списка
String[] stroka = {"Синий","Красный","Зеленый",
"Оранжевый"};
// назначается шрифт нулевому элементу списка
Font f0 = Font.getFont(Font.FACE_PROP6RTIONAL,
Font.STYLE_PLAIN, Font.SIZE_SMALL);
// назначается шрифт первому элементу списка
Font f1 = Font.getFont(Font.FACE_SYSTEM,
Font.STYLE_BOLD,Font.SIZE_MEDIUM);
// назначается шрифт второму элементу списка
Font f2 = Font.getFont(Font.FACE_MONOSPACE,
Font.STYLE_ITALIC,Font.SIZE_LARGE);
// назначается шрифт третьему элементу списка
Font f3 = Font.getFont(Font.FACE_SYSTEM,
Font.STYLEJJNDERLINED, Font.SIZE_LARGE);
// инициализация объекта mylist
mylist = new List("Класс List",
Choice.EXCLUSIVE,
stroka, icon);
// устанавливается шрифт нулевому элементу списка
mylist. setFont (0 , f0), ;
// устанавливается шрифт первому элементу списка
mylist.setFont(I,f1);
// устанавливается шрифт второму элементу списка
mylist .setFont.(2 , f 2) ;
//устанавливается шрифт третьему элементу списка
mylist.setFont(3,f3);
// добавить команду выхода
mylist.addCommand(exitMidlet);
mylist.setCommandListener(this);
 // отразить текущий дисплей
mydisplay.setCurrent(mylist);
}
public void pauseApp() {}
public void destroyApp(boolean unconditional) {}
public void commandAction(Command c, Displayable d)
{
// выход из приложения
if(с == exitMidlet)
{
destroyАрр(false);
notifyDestroyed() ;
}
}
}


Основным классом в программе из листинга 6.13, иллюстрирующей работу со шрифтом, является класс MainClassFont. Весь код программы построен на использовании класса List создающем список элементов. В строке кода:

Image[]  icon =  null


создается переменная для хранения массива изображений. Конкретно в этом примере будут использованы маленькие иконки, загружаемые каждому элементу списка. Всю группу элементов представляет объект my list класса List. В методе startApp () происходят основные действия по созданию списка элементов, загрузке изображения и назначению шрифта каждом элементу списка. В четырех строках кода:

Image imaged = Image.createlmage("/icond.png");
Image imagel = Image.createlmage("/iconl.png");
Image image2 = Image.createlmage("/icon2.png");
Image image3 = Image.createlmage("/iconS.png");


загружаются четыре различные иконки в виде шариков, окрашенных в синий, красный, зеленый и оранжевый цвет. Все они помещаются в массив:

icon = new Image[]{imaged, image1, image2, image3};


Далее в программном коде создается массив строковых значений:

String[] stroka = {"Синий","Красный","Зеленый","Оранжевый"}.


Теперь пришло время создать шрифты:

Font  f0 = Font.getFontfFont.FACE_PROPORTIONAL,
Font.STYLE_PLAIN, Font.SIZE_SMALL);
Font f1 = Font.getFont(Font.FACE_SYSTEM,Font.STYLE_BOLD,
Font.SIZE_MEDIUM);
Font f2 = Font.getFont(Font.FACE_MONOSPACE,
Font. STYLE_ITALIC, Font. SIZE_LARGE);
  Font f3 = Font.getFont(Font.FACE_SYSTEM,
Font.STYLE_UNDERLINED,Font.SIZE_LARGE);


В этих строках создаются четыре переменные f 0...f 3, содержащие различные по стилю, размеру и начертанию шрифты. С помощью созданных переменных впоследствии будет производиться установка шрифтов для каждого элемента списка. Список элементов представлен объектом mylist и выполнен по типу Exclusive (четыре элемента со своими иконками). В классе List имеется метод setFont () доступный в профиле MIDP 2.0, он и используется в примере.

Создав объект класса List, установим шрифт всем элементам списка:

mylist.setFont(0,f0);
mylist.setFont(1,f1);
mylist.setFont(2,f2);
mylist.setFont(3,f3);


С помощью метода setFont () происходит установка заданного шрифта, содержащегося в переменных f 0... f 3. Назначение шрифта происходит по индексам от 0 до 3 в массиве stroka [ ].

В конце кода происходит добавление команды выхода и отображение текущего экрана на дисплее телефона. На рис. 6.14 представлена работа программы из листинга 6.13.



Рис 6.14. Эмулятор телефона, на экране которого представлены разные шрифты


К сожалению, ресурсы мобильных телефонов не позволяют воспользоваться обилием шрифтов компьютерной платформы, но и имеющейся базы вполне достаточно цля создания разнообразных текстовых элементов. Использование шрифтов & программах значительно улучшает пользовательский интерфейс и придает приложению более изящный вид. В следующей главе будет рассматриваться программирование графики в Java 2 ME, с помощью классов низкоуровневого интерфейса.

Назад Начало



Книжный магазин