Иллюстрированный самоучитель по Java

Обработка действий мыши

Листинг 12.4. Простейшая программа рисования.

import java.awt.*;
import java.awt.event.*;
public class ScribbleTest extends Frame{
public ScribbleTest(String s){
super(s);
ScrollPane pane = new ScrollPane();
pane.setSize(300, 300);
add(pane, BorderLayout.CENTER);
Scribble scr = new Scribble(this, 500, 500);
pane.add(scr);
Panel p = new Panel 0;
add(p, BorderLayout.SOUTH);
Button bl = new Button("Красный");
p.add(bl);
bl.addActionListener(scr);
Button b2 = new Button("Зеленый");
p.add(b2);
b2.addActionListener(scr);
Button b3 = new Button("Синий");
p.add(b3);
b3.addActionListener(scr);
Button b4 = new Button("Черный");
p.add(b4);
b4.addActionListener(scr);
Button b5 = new Button("Очистить");
p.add(bS);
b5.addActionListener(scr);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
pack();
setvisible(true);
}
public static void main(String[] args){
new ScribbleTest(" \"Рисовалка\"");
}
}
class Scribble extends Component implements ActionListener, MouseListener, MouseMotionListener{
protected int lastX, lastY, w, h;
protected Color currColor = Color.black;
protected Frame f;
public Scribble(Frame frame, int width, int height){
f = frame;
w = width;
h = height;
enableEvents(AWTEvent.MOUSE_EVENT_MASK | AWTEvent.MOUSE_MOTION_EVENT_MASK);
addMouseListener(this);
addMouseMotionListener(this); }
public Dimension getPreferredSize(){
return new Dimension(w, h); }
public void actionPerformed(ActionEvent event){
String s = event.getActionCommand();
if (s.equals ("Очистить")) repaint();
else if (s.equals ("Красный")) currColor = CofLor.red;
else if (s.equals("Зеленый")) currColor = Coior.green;
else if (s.equals("Синий")) currColor = Color.blue;
else if (s.equals("Черный")) currColor = Color.black; }
public void mousePressed(MouseEvent e){
if ((e.getModifiers() & MouseEvent.BUTTON 1__MASK) = 0) return;
lastX = e.getXO; lastY = e.getYO; }
public void mouseDragged(MouseEvent e){
if ((e.getModifiers() & MouseEvent.BUTTON1_MASK) = 0) return;
Graphics g = getGraphics();
g.setColor(currColor);
g.drawLinedastX, lastY, e.getX(), e.getY());
lastX = e.getX(); lastY = e.getY(); }
public void mouseReleased(MouseEvent e){}
public void mouseClicked(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
public void mouseMoved(MouseEvent e){}
}
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.