Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
63
Добавлен:
24.02.2016
Размер:
282.62 Кб
Скачать

Приложение FontsList

Задание.Попробуем создать апплет двойного назначенияFontsList, в окне которого отображается список всех доступных апплету шрифтов.

Мы в предыдущей работе уже создавали апплет двойного назначения, причем апплет принимал параметры из файла HTML. Мы рассмотрим сейчас только ту часть программы, которая является новой для Вас. Кроме того, попробуем проиллюстрировать процесс нахождения необходимых методов и классов с помощью системы помощиJDK.

Пример 1. Апплет двойного назначения FontsList

import javax.swing.*;

import java.awt.event.*;

import java.awt.*;

public class FrameUse extends JApplet{

Font f[];

int count = 0;

int x = 10, y = 20;

double w, h;

int tek = 0;

public FrameUse()

{

}

public void start()

{

Dimension d =getSize();

w = d.getWidth(); h = d.getHeight();

}

public void init()

{

GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();

f = ge.getAllFonts();

MouseListener ml = new MouseAdapter(){

public void mouseClicked(MouseEvent e) {

repaint();

}

};

addMouseListener(ml);

}

public void paint(Graphics g)

{

g.clearRect(0, 0,(int)w,(int)h);

int i;

for ( i = tek; i < f.length; i++)

{

String s="";

s +=f[i].getFontName();

s +=" ";

s +=f[i].getFamily();

s +=" ";

s +=f[i].getSize();

s +=" ";

s +=f[i].toString();

g.drawString(s,x,y);

y = y + 20;

if( y >= h){ y = 20; break;}// переход на начало области апплета //по вертикали

}

if (i==f.length)

{ i = 0; y = 20;} // вывод всех шрифтов, переход на // начало списка

tek = i;

}

public static void main(String[] args) {

JFrame frame = new JFrame ("Пример");

int width = 800;

int height = 300;

FrameUse appl = new FrameUse();

appl.init();

appl.start();

frame.getContentPane().add(appl);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setSize(width,height);

frame.setVisible(true);

}

}

В методе initмы получаем массив всех доступных шрифтов с помощью следующего кода:

GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();

f = ge.getAllFonts();

Обратите внимание, что f– массив типа Font f[];

В методе paintмы выводим столько строк с указанием разных параметров шрифтов, сколько вмещается по вертикали. Для продолжения вывода списка шрифтов используется обработка события по щелчку мыши. При этом выполняется очистка области апплета, а затем продолжается вывод. Для обработки события используется код:

MouseListener ml = new MouseAdapter(){

public void mouseClicked(MouseEvent e) {

repaint();

}

Мы рассмотрим обработку событий чуть позже. Если мы хотим изменить цвет шрифта и вид его, то можно добавить код:

g.setFont(new Font(f[i].getFontName(),Font.PLAIN,14));

g.setColor(new Color((float)Math.random(),(float)Math.random(),(float)Math.random()));

Тогда метод paint будет иметь следующий вид:

public void paint(Graphics g)

{

g.clearRect(0, 0,(int)w,(int)h);

int i;

for ( i = tek; i < f.length; i++)

{

g.setFont(new Font(f[i].getFontName(),Font.PLAIN,14));

g.setColor(new Color((float)Math.random(),(float)Math.random(),(float)Math.random()));

String s="";

s +=f[i].toString();

g.drawString(s,x,y);

y = y + 20;

if( y >= h){ y = 20; break;}

}

if (i==f.length)

{ i = 0; y = 20;}

tek = i;

}

Окно приложения имеет вид:

Обычно студенты задают вопрос: «Откуда Вы знаете, какие методы надо использовать?».

Надо просто научиться пользоваться справочником по Java. Изучайте внимательнее классы, и через некоторое время Вы будете знать, какие методы и классы использовать в разных ситуациях.