1. 程式人生 > >詳解Java Swing中新增滑鼠事件的兩種方式

詳解Java Swing中新增滑鼠事件的兩種方式

    今天和一個正在培訓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);
		}
		
		
	}
	
}


關於這兩種方法的好壞:

    當然就易於維護方法來講還是第二種方法好,十分清晰。但有時第一種方法很方法,具體什麼時候用什麼方法,真的看情況。原則上我們是能用第二種方法時我們就用第二種方法。如果感覺第一種方法更方便的地方,再用第一種方法。