java事件監聽器使用小結(個人總結,有錯請指)
//第一種:外部定義,通過監聽器的物件來呼叫的監聽器
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
//定義監聽器
class MyListener implements ActionListener
{
public voidactionPerformed(ActionEvent e)
{
JOptionPane.showMessageDialog(null,"按鈕被點選");//彈出訊息對話方塊
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
public class TestListener{
//主方法
public static void main(String[]args){
//建立圖形介面
JFrame frame=newJFrame("監聽器的用法");
frame.setSize(400, 300);
frame.setLocationRelativeTo(null);//null即為空,框架在螢幕中居中顯示
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
JPanel panel=new JPanel();
frame.add(panel);
JButton jbt=newJButton("按鈕");
panel.add(jbt);
MyListener mylistener = newMyListener();
jbt.addActionListener(mylistener);
}
}
==============================================================================================
==============================================================================================
//第二種:內部定義呼叫的監聽器(匿名內部類作為事件監聽器)
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
public class TestListener{
//主方法
public static void main(String[]args){
//建立圖形介面
JFrame frame=newJFrame("監聽器的用法");
frame.setSize(400, 300);
frame.setLocationRelativeTo(null);//null即為空,框架在螢幕中居中顯示
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
JPanel panel=new JPanel();
frame.add(panel);
JButton jbt=newJButton("按鈕");
panel.add(jbt);
//內部定義監聽器
jbt.addActionListener(newActionListener(){
public void actionPerformed(ActionEvent e){
JOptionPane.showMessageDialog(null,"按鈕被點選");//彈出訊息對話方塊
}
});
}
}
==============================================================================================
==============================================================================================
//第三種:外部定義,內部呼叫的監聽器(與第一種類似)
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
//定義監聽器
class MyListener implements ActionListener
{
public voidactionPerformed(ActionEvent e)
{
JOptionPane.showMessageDialog(null,"確認按鈕被點選");//彈出訊息對話方塊
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
public class TestListener{
//主方法
public static void main(String[]args){
//建立圖形介面
JFrame frame=newJFrame("監聽器的用法");
frame.setSize(400, 300);
frame.setLocationRelativeTo(null);//null即為空,框架在螢幕中居中顯示
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
JPanel panel=new JPanel();
frame.add(panel);
JButton jbt=newJButton("按鈕");
panel.add(jbt);
jbt.addActionListener(newMyListener());
}
}
//第四種:在構造方法中使用this來呼叫的監聽器(自身類作為事件監聽器)
import javax.swing.*;
import java.awt.event.*;
class TestListener implements ActionListener{
//構造方法
publicTestListener(){
//建立圖形介面
JFrameframe=new JFrame("監聽器的用法");
frame.setSize(400,300);
frame.setLocationRelativeTo(null);//null即為空,框架在螢幕中居中顯示
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
JPanelpanel=new JPanel();
frame.add(panel);
JButtonjbt=new JButton("按鈕");
panel.add(jbt);
//新增監聽器
jbt.addActionListener(this);
}
//定義監聽器
publicvoid actionPerformed (ActionEvent e){
JOptionPane.showMessageDialog(null,"確認按鈕被點選");//彈出訊息對話方塊
}
//主方法
publicstatic void main(String args[]){
new TestListener();//直接呼叫構造方法,當然你也可以用TestListener類定義一個
//物件來自動呼叫構造方法
}
}