java四种方法事件监听(匿名类,外部类,内部类,自身)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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();