java四种方法事件监听(匿名类,外部类,内部类,自身)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

JAVA四种方法实现事件监听

1.外部类实现事件监听:

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

publicclass Listener1extends JFrame {

JButton button1,button2;

JPanel pane1,pane2,p1,p2;

CardLayout card1=new CardLayout();

/*CardLayout布局方式将容器中的每个组件看作一张卡片。

一次只能看到一张卡片,容器则充当卡片的堆栈*/

Listener1(){

this.setTitle("外部类实现事件监听");

this.setBounds(200,200,300,200);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setVisible(true);

init();

}

publicvoid init(){

p1=new JPanel();

p1.add(new JLabel("第一个面板"));

p1.setBackground(Color.red);

p2=new JPanel();

p2.add(new JLabel("第二个面板"));

p2.setBackground(Color.green);

pane1=new JPanel(card1);

pane1.add("红色", p1);

pane1.add("绿色", p2);

button1=new JButton("红色");

button2=new JButton("绿色");

pane2=new JPanel();

pane2.add(button1);

pane2.add(button2);

this.add(pane1,BorderLayout.CENTER);

this.add(pane2,BorderLayout.SOUTH);

button1.addActionListener(new ColorEvent(card1,pane1));

button2.addActionListener(new ColorEvent(card1,pane1)); }

publicstaticvoid main(String[] args) {

// TODO Auto-generated method stub

new Listener1();

}

}

class ColorEvent implements ActionListener{

CardLayout card1=new CardLayout();

JPanel pane1=new JPanel();

ColorEvent(CardLayout card1,JPanel pane1){

this.card1=card1;

this.pane1=pane1;

}

@Override

publicvoid actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

if(e.getActionCommand().equals("红色")){

//getActionCommand()返回与此动作相关的命令字符串

card1.show(pane1, "红色");

}elseif(e.getActionCommand().equals("绿色")){

card1.show(pane1, "绿色");

}

}

}

2.内部类实现事件监听:

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

publicclass Listener2extends JFrame {

JButton button1,button2;

JPanel pane1,pane2,p1,p2;

CardLayout card1=new CardLayout();

/*CardLayout布局方式将容器中的每个组件看作一张卡片。

一次只能看到一张卡片,容器则充当卡片的堆栈*/

Listener2(){

this.setTitle("内部类实现事件监听");

this.setBounds(200,200,300,200);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setVisible(true);

init();

}

publicvoid init(){

p1=new JPanel();

p1.add(new JLabel("第一个面板"));

p1.setBackground(Color.red);

p2=new JPanel();

p2.add(new JLabel("第二个面板"));

p2.setBackground(Color.green);

pane1=new JPanel(card1);

pane1.add("红色", p1);

pane1.add("绿色", p2);

button1=new JButton("红色");

button2=new JButton("绿色");

pane2=new JPanel();

pane2.add(button1);

pane2.add(button2);

this.add(pane1,BorderLayout.CENTER);

this.add(pane2,BorderLayout.SOUTH);

button1.addActionListener(new ColorEvent());

button2.addActionListener(new ColorEvent()); }

class ColorEvent implements ActionListener{

@Override

publicvoid actionPerformed(ActionEvent e) { // TODO Auto-generated method stub

if(e.getSource()==button1){

//返回发生事件的对象。

card1.show(pane1, "红色");

}elseif(e.getSource()==button2){

card1.show(pane1, "绿色");

}

}

}

publicstaticvoid main(String[] args) {

// TODO Auto-generated method stub

new Listener2();

相关文档
最新文档