您的位置:首页 > 编程语言 > Java开发

java 事件处理的几种写法

2016-07-13 22:34 483 查看


 

三种都是在构造方法中添加监听器的,不同的是第一种实例监听器,然后再组件中添加,具体事件处理方法是放在类外的

第二种是不实例,直接用newEnlargeListener(),并且EnlargeListener也设为内部类

第三种匿名类监听器

 

(1)public class HandleEventextends JFrame{                     //HandleEvent
继承JFrame

    public HandleEvent(){               

             add(panel);                 //JFrame中包含panel
,panel中包含jbtOK

             OKListenerClasslistener1 = new OKListenerClass();     //实例化监听器listener1

             CanelListenerClasslistener2 = new CanelListenerClass();

             jbtOK.addActionListener(listener1);                    //在jbtOK中添加监听器listener1

             jbtCancel.addActionListener(listener2);

    }

     class OKListenerClass implementsActionListener{            //OKListenerClass
实例ActionListener

              public voidactionPerformed(ActionEvent e){

              System.out.println("OK buttonclicked");

              }

     }

     class CanelListenerClassimplements ActionListener{

              public voidactionPerformed(ActionEvent e){

                System.out.println("Canel buttonclicked");    

              }

              }

 

 

(2)           public class ControlCircle2 extends JFrame{

      public ControlCircle2(){

          jbtEnlarge.addActionListener(new EnlargeListener());

               jbtShink.addActionListener(newShinkListener());

      }

     classEnlargeListener implements ActionListener{

               public voidactionPerformed(ActionEvent e){

                         canvas.enlarge();

               }

               

      }

 

(3)  jbtNew.addActionListener(
            new ActionListener(){
               publicvoidactionPerformed(ActionEvent
e){
                   System.out.println("ProcessNew");
               }
            });
 

 

具体代码如下

package demo01;
import java.awt.event.*;
import javax.swing.*;
public class HandleEvent extends JFrame{ //HandleEvent 继承JFrame
public HandleEvent(){
JButton jbtOK = new JButton("OK");
JButton jbtCancel = new JButton("Cancel");

JPanel panel = new JPanel();
panel.add(jbtOK);
panel.add(jbtCancel);

add(panel); //JFrame中包含panel ,panel中包含jbtOK
OKListenerClass listener1 = new OKListenerClass(); //实例化监听器listener1
CanelListenerClass listener2 = new CanelListenerClass();
jbtOK.addActionListener(listener1); //在jbtOK中添加监听器listener1
jbtCancel.addActionListener(listener2);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
JFrame frame = new HandleEvent();
frame.setTitle("Handle Event");
frame.setSize(200, 150);
frame.setLocation(200,100);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);

}
}
class OKListenerClass implements ActionListener{ //OKListenerClass 实例ActionListener
public void actionPerformed(ActionEvent e){
System.out.println("OK button clicked");
}
}

class CanelListenerClass implements ActionListener{
public void actionPerformed(ActionEvent e){
System.out.println("Canel button clicked");
}
}

package demo01;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ControlCircle2 extends JFrame{
private JButton jbtEnlarge = new JButton("Enlarge");
private JButton jbtShink = new JButton("Shrink");
private CirclePanel canvas = new CirclePanel();

public ControlCircle2(){
JPanel panel = new JPanel();
panel.add(jbtEnlarge);
panel.add(jbtShink);
this.add(panel,BorderLayout.SOUTH);
this.add(canvas,BorderLayout.CENTER);
jbtEnlarge.addActionListener(new EnlargeListener());
jbtShink.addActionListener(new ShinkListener());
}
public static void main(String []args){
JFrame frame = new ControlCircle2();
frame.setTitle("ControlCir
4000
cle2");
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(200, 200);
frame.setVisible(true);
}
class EnlargeListener implements ActionListener{
public void actionPerformed(ActionEvent e){
canvas.enlarge();
}

}
class ShinkListener implements ActionListener{
public void actionPerformed(ActionEvent e){
canvas.enlarge2();
}

}
class CirclePanel extends JPanel{
private int radius = 5;

public void enlarge(){
radius++;
repaint();
}
public void enlarge2(){
radius--;
repaint();
}
protected void paintComponent(Graphics g){
super.paintComponent(g);
g.drawOval(getWidth()/2-radius, getHeight()/2-radius, 2*radius,2*radius);
}
}
}

package demo01;
import javax.swing.*;
import java.awt.event.*;
public class AnnoymousListenerDemo extends JFrame{
public AnnoymousListenerDemo(){
JButton jbtNew = new JButton("New");
JButton jbtOpen = new JButton("Open");
JButton jbtSave = new JButton("Save");
JButton jbtPrint = new JButton("Print");
JPanel panel = new JPanel();
panel.add(jbtNew);
panel.add(jbtOpen);
panel.add(jbtSave);
panel.add(jbtPrint);
add(panel);

//Create and register anonymous inner-class listener
jbtNew.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
System.out.println("Process New");
}
});

jbtOpen.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
System.out.println("Process Open");
}
});

jbtSave.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
System.out.println("Process Save");
}
});

jbtPrint.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
System.out.println("Process Print");
}
});

}
public static void main(String[] args) {
// TODO Auto-generated method stub
JFrame frame = new AnnoymousListenerDemo();
frame.setTitle("AnnoymousListenerDemo");
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();                  //这里没有用setSize方法,pack()方法会随放在框架中组件的大小来自动调整框架大小
frame.setVisible(true);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  事件处理 java