当前位置:文档之家› java四种方法事件监听(匿名类,外部类,内部类,自身)

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

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 stubnew Listener1();}}class ColorEvent implements ActionListener{CardLayout card1=new CardLayout();JPanel pane1=new JPanel();ColorEvent(CardLayout card1,JPanel pane1){this.card1=card1;this.pane1=pane1;}@Overridepublicvoid actionPerformed(ActionEvent e) {// TODO Auto-generated method stubif(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{@Overridepublicvoid actionPerformed(ActionEvent e) { // TODO Auto-generated method stubif(e.getSource()==button1){//返回发生事件的对象。

card1.show(pane1, "红色");}elseif(e.getSource()==button2){card1.show(pane1, "绿色");}}}publicstaticvoid main(String[] args) {// TODO Auto-generated method stubnew Listener2();}}3.自身类实现事件监听:import java.awt.*;import java.awt.event.*;import javax.swing.*;publicclass Listener3extends JFrame implements ActionListener { JButton button1,button2;JPanel pane1,pane2,p1,p2;CardLayout card1=new CardLayout();/*CardLayout布局方式将容器中的每个组件看作一张卡片。

一次只能看到一张卡片,容器则充当卡片的堆栈*/Listener3(){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(this);button2.addActionListener(this);}@Overridepublicvoid actionPerformed(ActionEvent e) {// TODO Auto-generated method stubif(e.getActionCommand().equals("红色")){//getActionCommand()返回与此动作相关的命令字符串card1.show(pane1, "红色");}elseif(e.getActionCommand().equals("绿色")){card1.show(pane1, "绿色");}}publicstaticvoid main(String[] args) {// TODO Auto-generated method stubnew Listener3();}}4.匿名类实现事件监听:import java.awt.*;import java.awt.event.*;import javax.swing.*;publicclass Listener4extends JFrame{JButton button1,button2;JPanel pane1,pane2,p1,p2;CardLayout card1=new CardLayout();/*CardLayout布局方式将容器中的每个组件看作一张卡片。

相关主题