今天和一个正在培训java的同学聊天,说起Java Swing中添加事件监听的两种方式。在此就给大家具体说说。
Java Swing中对事件监听有两种方式
1.添加内部监听(也叫匿名内部类方式),实现代码如下:
import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JButton; import javax.swing.JOptionPane; /* * Java Swing添加事件监听(一)匿名内部类方式 * */ public class ActionListennerOne { public static void main(String[] args) { //1.创建一个JFrame:myFrame JFrame myFrame = new JFrame(); //2.设置myFrame的属性:可见、大小 myFrame.setVisible(true); myFrame.setSize(200, 200); //3.创建一个JPanel:myPanel JPanel myPanel = new JPanel(); //4.把myPanel放置在myFrame上 myFrame.add(myPanel); //5.创建一个JButton:myButton JButton myButton = new JButton("按钮1"); //6。把myButton放置在myPanel上 myPanel.add(myButton); //7.给myButton添加事件监听:内部类方式(仔细看,特别是标点符号) myButton.addMouseListener(new MouseListener() { public void mouseReleased(MouseEvent e) {} public void mousePressed(MouseEvent e) {} public void mouseExited(MouseEvent e) {} public void mouseEntered(MouseEvent e) {} public void mouseClicked(MouseEvent e) { //一个弹框,此处不细说其语法 JOptionPane.showMessageDialog(null,"内部类事件监听监听","注意",0,null); } }); } }
2.第二种(没有什么标准叫法),实现代码如下:
import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JButton; import javax.swing.JOptionPane; /* * Java Swing添加事件监听(二) * */ public class ActionListennerTwo { public static void main(String[] args) { ActionFrame test = new ActionFrame(); } } class ActionFrame implements ActionListener{ JButton myButton; public ActionFrame(){ //1.创建一个JFrame:myFrame JFrame myFrame = new JFrame(); //2.设置myFrame的属性:可见、大小 myFrame.setVisible(true); myFrame.setSize(200, 200); //3.创建一个JPanel:myPanel JPanel myPanel = new JPanel(); //4.把myPanel放置在myFrame上 myFrame.add(myPanel); //5.创建一个JButton:myButton myButton = new JButton("按钮2"); //6.把myButton放置在myPanel上 myPanel.add(myButton); //7.myButton添加事件监听(一定注意这句话) myButton.addActionListener(this); } public void actionPerformed(ActionEvent e) { if(e.getSource()==myButton){ JOptionPane.showMessageDialog(null,"非内部类事件监听","注意",0,null); } } }
关于这两种方法的好坏:
当然就易于维护方法来讲还是第二种方法好,十分清晰。但有时第一种方法很方法,具体什么时候用什么方法,真的看情况。原则上我们是能用第二种方法时我们就用第二种方法。如果感觉第一种方法更方便的地方,再用第一种方法。