詳解Java Swing中新增滑鼠事件的兩種方式
阿新 • • 發佈:2019-02-05
今天和一個正在培訓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); } } }
關於這兩種方法的好壞:
當然就易於維護方法來講還是第二種方法好,十分清晰。但有時第一種方法很方法,具體什麼時候用什麼方法,真的看情況。原則上我們是能用第二種方法時我們就用第二種方法。如果感覺第一種方法更方便的地方,再用第一種方法。