Программирование на языке Java

Рисование "каракулей" с использованием встроенных классов



Рисование "каракулей" с использованием встроенных классов

Модель обработки событий Java 1.1 разработана с учетом того, чтобы хорошо сочетаться с другой новой особенностью Java 1.1: встроенными классами (глава, посвященная им, еще не написана ;-(). В следующем примере показано, как изменится данный апплет, если слушатели событий будут реализованы в виде анонимных встроенных классов. Обратите внимание на компактность данного варианта программы. Новая особенность, добавленная в апплет - кнопка Clear. Для этой кнопки зарегистрирован объект ActionListener, а сама она выполняет очистку экрана при наступлении соответствующего события. /* <applet code = "Scribble3" width=200 height=200> </applet> */ import java.applet.*; import java.awt.*; import java.awt.event.*; public class Scribble3 extends Applet { int last_x, last_y; public void init() { // Определяет, создает и регистрирует объект MouseListener. this.addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e) { last_x = e.getX(); last_y = e.getY(); } } ); // Определяет, создает и регистрирует объект MouseMotionListener. this.addMouseMotionListener(new MouseMotionAdapter() { public void mouseDragged(MouseEvent e) { Graphics g = getGraphics(); int x = e.getX(), y= e.getY(); g.setColor(Color.black); g.drawLine(last_x, last_y, x, y); last_x = x; last_y = y; } }); // Создает кнопку Clear. Button b = new Button("Clear"); // Определяет, создает и регистрирует объект слушателя // для обработки события, связанного с нажатием кнопки. b.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // стирание каракулей Graphics g = getGraphics(); g.setColor(getBackground()); g.fillRect(0, 0, getSize().width, getSize().height); } }); // Добавляет кнопку в апплет. this.add(b); } }



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