Занятие 7. Обработка событий в Java

Оглавление "Обработка событий в Java"

Пример 1.1. Файл MyNotebook.java

Создание отдельного класса-обработчика TextMove для события класса ActionEvent.

import java.awt.*; import java.awt.event.*;  class MyNotebook extends Frame{    MyNotebook(String title) {     super(title);     TextField tf = new TextField("Вводите текст", 50);      add(tf, BorderLayout.NORTH);     TextArea ta = new TextArea();      ta.setEditable(false);      add(ta);     Panel p = new Panel();      add(p, BorderLayout.SOUTH);     Button b = new Button("Перенести");      p.add(b);     tf.addActionListener(new TextMove(tf, ta));      b.addActionListener(new TextMove(tf, ta));     setSize(300, 200); setVisible(true);    }     public static void main(String[] args){     Frame f = new MyNotebook(" Обработка ActionEvent");      f.addWindowListener(new WindowAdapter(){       public void windowClosing(WindowEvent ev){         System.exit(0);        }     });    }  }  class TextMove implements ActionListener{   private TextField tf;   private TextArea ta;   TextMove(TextField tf, TextArea ta){      this.tf = tf; this.ta = ta;   }   public void actionPerformed(ActionEvent ae){      ta.append(tf.getText()+"\n");   }  }

Пример 1.2. Файл MyNotebook.java

Обработка события в классе, который содержит источник события, т.е. реализация интерфейса в классе-контейнере.

import java.awt.*; import java.awt.event.*;  class MyNotebook extends Frame{    MyNotebook(String title) {     super(title);     TextField tf = new TextField("Вводите текст", 50);      add(tf, BorderLayout.NORTH);     TextArea ta = new TextArea();      ta.setEditable(false);      add(ta);     Panel p = new Panel();      add(p, BorderLayout.SOUTH);     Button b = new Button("Перенести");      p.add(b);     tf.addActionListener(new TextMove(tf, ta));      b.addActionListener(new TextMove(tf, ta));     setSize(300, 200); setVisible(true);    }     public static void main(String[] args){     Frame f = new MyNotebook(" Обработка ActionEvent");      f.addWindowListener(new WindowAdapter(){       public void windowClosing(WindowEvent ev){         System.exit(0);        }     });    }  }  class TextMove implements ActionListener{   private TextField tf;   private TextArea ta;   TextMove(TextField tf, TextArea ta){      this.tf = tf; this.ta = ta;   }   public void actionPerformed(ActionEvent ae){      ta.append(tf.getText()+"\n");   }  }

Пример 1.3. Файл MyNotebook.java

Обработчик события является вложенным классом.

import java.awt.*; import java.awt.event.*;  class MyNotebook extends Frame{    private TextField tf;   private TextArea ta;    MyNotebook(String title) {     super(title);     tf = new TextField("Вводите текст", 50);      add(tf, BorderLayout.NORTH);     ta = new TextArea();      ta.setEditable(false);      add(ta);     Panel p = new Panel();     add(p, BorderLayout.SOUTH);     Button b = new Button("Перенести");      p.add(b);     tf.addActionListener(new TextMove());      b.addActionListener(new TextMove());     setSize(300, 200); setVisible(true);    }     public static void main(String[] args){     Frame f = new MyNotebook(" Обработка ActionEvent");      f.addWindowListener(new WindowAdapter(){       public void windowClosing(WindowEvent ev){         System.exit(0);        }     });    }   // Вложенный класс    class TextMove implements ActionListener{     public void actionPerformed(ActionEvent ae){       ta.append(tf.getText()+"\n");     }    } }

Пример 2. Файл ScribbleTest.java

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();      add(p, BorderLayout.SOUTH);     Button b1 = new Button("Красный");      p.add(b1);     b1.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(b5);     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 = Color.red;       else if (s.equals("Зеленый")) currColor = Color.green;       else if (s.equals("Синий")) currColor = Color.blue;       else if (s.equals("Черный")) currColor = Color.black;     }      public void mousePressed(MouseEvent e){       if ((e.getModifiers() & MouseEvent.BUTTON1_MASK) == 0) return;       lastX = e.getX(); lastY = e.getY();     }      public void mouseDragged(MouseEvent e){       if ((e.getModifiers() & MouseEvent.BUTTON1_MASK) == 0) return;       Graphics g = getGraphics();       g.setColor(currColor);       g.drawLine(lastX, 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){}  }