Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

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




import javax.swing.*;

import java.awt.event.*;

import java.awt.*;

 

public class FontsList extends JApplet{

Font f[];

int count = 0, x = 10, y = 20;

double w, h;

int tek = 0;

public FontsList() { }

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);

resize(800, 300);

}

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 ("Пример");

FontsList appl = new FontsList();

appl.init(); appl.start();

frame.getContentPane().add(appl);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setSize(800, 300);

frame.setVisible(true);

}

}

 

Если мы хотим изменить цвет шрифта и вид его, то можно добавить код в метод paint:

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

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

 

Модель делегирования событий в Java 1.1

Модель событий, применяемая в Java 1.1, подходит для использования в AWT и в Swing. В этой модели каждое событие - это класс, наследуемый от класса java.util.EventObject. Все AWT события наследуются от класса java.awt.AWTEvent. Для удобства различные типы событий AWT помещены в отдельный пакет java.awt.event.

Модель событий базируется на концепции "слушаю события". Объект, ожидающий какое-либо событие, "слушает" его, является event listener. Объект, вырабатывающий событие, (источник события) поддерживает список объектов, ожидающих событие, и оповещает все объекты в списке о его появлении. Источник события имеет методы для добавления объектов, ожидающих события, и методы для удаления таких объектов.

Источник события при возникновении события запускает метод – обработчик события и передает в него объект типа EventObject или производного от него. Для того чтобы запустить нужный метод все объекты типа listener должны реализовывать определенный интерфейс. Интерфейс может определять несколько методов. Например, класс MouseEvent представляет несколько событий: нажатие кнопки, отпускание кнопки, и другие. В таблице 2.1 приводятся тип объекта, интерфейс для его обработки и методы, определяемые в каждом интерфейсе.

Для каждого из интерфейсов, содержащих более одного метода, определен класс-адаптер, который содержит пустые тела методов. Классы-адаптеры имеют имена, такие же, как и имена интерфейсов с заменой Listener на Adapter: например, MouseAdapter, WindowAdapter.

Если Вы реализовали интерфейс или создали класс адаптера, нужно создать объект для того, чтобы он "слушал" событие. Затем зарегистрировать этот объект в источнике события. В AWT источник события всегда компонента: кнопка, список, и т.д. Регистрация делается с помощью методов с именами вида addXXXListener. Удаление объекта из списка слушающих выполняется с помощью removeXXXListener. Здесь XXX - имя типа события, генерируемого источником.

Таблица 2.1.

Класс события, интерфейс и методы для обработки.

Event Class Listener Interface Listener Methods
ActionEvent ActionListener actionPerformed()
AdjustmentEvent AdjustmentListener adjustmentValueChanged()
ComponentEvent ComponentListener componentHidden()
    componentMoved()
    componentResized()
    componentShown()
ContainerEvent ContainerListener componentAdded()
    componentRemoved()
FocusEvent FocusListener focusGained()
    focusLost()
ItemEvent ItemListener itemStateChanged()
KeyEvent KeyListener keyPressed()
    keyReleased()
    keyTyped()
MouseEvent MouseListener mouseClicked()
    mouseEntered()
    mouseExited()
    mousePressed()
    mouseReleased()
  MouseMotionListener mouseDragged()
    mouseMoved()
TextEvent TextListener textValueChanged()
WindowEvent WindowListener windowActivated()
    windowClosed()
    windowClosing()
    windowDeactivated()
    windowDeiconified()
    windowIconified()
    windowOpened()

 

Таблица 2.2.

Компоненты AWT и типы событий, которые они могут генерировать.

Компонент События, генерируемые компонентом Значение
Button ActionEvent Пользователь нажал на кнопку
Checkbox ItemEvent Пользователь щелкнул на элементе, изменив выбор
CheckboxMenuItem ItemEvent Пользователь выбрал пункт из меню
Choice ItemEvent Пользователь щелкнул на элементе, изменив выбор
Component ComponentEvent Компонент передвинут, изменил размеры, стал видимым или невидимым.
  FocusEvent Компонент получил или потерял фокус
  KeyEvent Пользователь нажал или отпустил клавишу
  MouseEvent Пользователь щелкнул кнопкой мыши, мышь попала в пределы компонента или ушла за его границы, или пользователь тянет объект. MouseEvent имеет два интерфейса прослушивания, MouseListener и MouseMotionListener.
Container ContainerEvent Компонент добавлен или удален из контейнера
List ActionEvent Пользователь дважды щелкнул на элементе списка
  ItemEvent Пользователь выбрал пункт из списка
MenuItem ActionEvent Пользователь выбрал пункт меню
Scrollbar AdjustmentEvent Пользователь передвинул движок
TextComponent TextEvent Пользователь изменил текст
TextField ActionEvent Пользователь закончил редактирование текста
Window WindowEvent Окно открыто, или закрыто. или минимизировано, или максимизировано

 

Пример обработки события с использованием реализации интерфейса.

import java.awt.event.*;import java.applet.Applet;import java.awt.Graphics; public class SimpleClick extends Applet implements MouseListener { StringBuffer buffer; public void init() { addMouseListener(this); buffer = new StringBuffer(); addItem("initializing... "); } public void start() { addItem("starting... "); } public void stop() { addItem("stopping... "); } public void destroy() { addItem("preparing for unloading..."); } void addItem(String newWord) { System.out.println(newWord); buffer.append(newWord); repaint(); } public void paint(Graphics g) { g.drawRect(0, 0, getSize().width - 1, getSize().height - 1); g.drawString(buffer.toString(), 5, 15); }// Остальные методы интерфейса реализуются как пустые методы public void mouseEntered(MouseEvent event) { } public void mouseExited(MouseEvent event) { } public void mousePressed(MouseEvent event) { } public void mouseReleased(MouseEvent event) { } public void mouseClicked(MouseEvent event) { addItem("click! "); } }
Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...