java添加事件监听的四个办法

第一次写博客,写的比较烂。经常在网上看别人写,对着别人的代码仿写,不然自己也来试试好了。

#########################

这里主要写的是按钮事件监听,以及相关实现

1.package com.zhang.CSD1;

import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

import com.sun.org.apache.bcel.internal.generic.NEW;

//继承ActionListener,本身当作事件监听类
public class ButtonEvent1 implements ActionListener{
    //全局变量
    JButton jButton1;
    JButton  jButton2;
    JPanel jPanel;
    public ButtonEvent1() {
        JFrame jFrame=new JFrame("小小换肤");
        jPanel=new JPanel();
        jButton1=new JButton("黄色");
        jButton2=new JButton("红色");
        jButton1.addActionListener(this);
        jButton2.addActionListener(this);
        jPanel.add(jButton1);
        jPanel.add(jButton2);
        jFrame.add(jPanel);
        jFrame.setLocation(500, 500);
        jFrame.setSize(500, 500);
        jFrame.setVisible(true);
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        if(e.getSource()==jButton1) {
            jPanel.setBackground(Color.YELLOW);
        }else if(e.getSource()==jButton2) {
            jPanel.setBackground(Color.red);
        }
    }
    public static void main(String[] args) {
        new ButtonEvent1();
    }
    
}
这是结果显示


2.匿名内部类。我比较喜欢这种写法,感觉更方便

package com.zhang.CSD1;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class ButtonEvent2 {

    //全局变量
        JButton jButton1;
        JButton  jButton2;
        JPanel jPanel;
        public ButtonEvent2() {
            JFrame jFrame=new JFrame("小小换肤");
            jPanel=new JPanel();
            jButton1=new JButton("黄色");
            jButton2=new JButton("红色");
            //********************主要区别*****************
            jButton1.addActionListener(new ActionListener() {
                
                @Override
                public void actionPerformed(ActionEvent e) {
                    // TODO Auto-generated method stub
                    jPanel.setBackground(Color.yellow);
                }
            });
            jButton2.addActionListener(new ActionListener() {
                
                @Override
                public void actionPerformed(ActionEvent e) {
                    // TODO Auto-generated method stub
                    jPanel.setBackground(Color.red);
                }
            });
            jPanel.add(jButton1);
            jPanel.add(jButton2);
            jFrame.add(jPanel);
            jFrame.setLocation(500, 500);
            jFrame.setSize(500, 500);
            jFrame.setVisible(true);
        }
        public static void main(String[] args) {
            new ButtonEvent1();
        }
}

3.内部类..用的比较少

package com.zhang.CSD1;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JPanel;

import sun.net.www.content.image.jpeg;

public class ButtonEvent3 {

    //全局变量
        JButton jButton1;
        JButton  jButton2;
        JPanel jPanel;
        public ButtonEvent3() {
            JFrame jFrame=new JFrame("小小换肤");
            jPanel=new JPanel();
            jButton1=new JButton("黄色");
            jButton2=new JButton("红色");
            jButton1.addActionListener(new ColorEvent() );
            jButton2.addActionListener( new ColorEvent());
            jPanel.add(jButton1);
            jPanel.add(jButton2);
            jFrame.add(jPanel);
            jFrame.setLocation(500, 500);
            jFrame.setSize(500, 500);
            jFrame.setVisible(true);
        }
        public static void main(String[] args) {
            new ButtonEvent3();
        }
        class ColorEvent implements ActionListener{
            @Override
            public void actionPerformed(ActionEvent e) {
                if(e.getSource()==jButton1) {
                    jPanel.setBackground(Color.yellow);
                }else if(e.getSource()==jButton2) {
                    jPanel.setBackground(Color.red);
                }
            }
        }
        
}

4.外部类和内部类的写法差不多,不想写了


扫描二维码关注公众号,回复: 1451041 查看本文章




猜你喜欢

转载自blog.csdn.net/qq_41263070/article/details/80557626