自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Java Swing事件處理方法

開發(fā) 后端
本文介紹Java Swing事件處理方法,包括新建一個組件,將該組件添加到相應(yīng)的面板和注冊監(jiān)聽器以監(jiān)聽事件源產(chǎn)生的事件等。

Swing是目前Java中不可缺少的窗口工具組,是用戶建立圖形化用戶界面(GUI)程序的強大工具。Java Swing組件自動產(chǎn)生各種事件來響應(yīng)用戶行為。如當(dāng)用戶點擊按鈕或選擇菜單項目時,Swing組件會產(chǎn)生一個ActionEvent。Swing組件會產(chǎn)生許多事件,如ActionEvents,ChangeEvents,ItemEvents等,來響應(yīng)用戶的鼠標(biāo)點擊行為,列表框中值的改變,計時器的開始計時等行為。在Java Swing編程中,通過注冊監(jiān)聽器,我們可以監(jiān)聽事件源產(chǎn)生的事件,從而在事件處理程序中處理我們所需要處理的用戶行為。

Java Swing中處理各組件事件的一般步驟是:

1. 新建一個組件(如JButton)。

2. 將該組件添加到相應(yīng)的面板(如JPanel)。

3. 注冊監(jiān)聽器以監(jiān)聽事件源產(chǎn)生的事件(如通過ActionListener來響應(yīng)用戶點擊按鈕)。

4. 定義處理事件的方法(如在ActionListener中的actionPerformed中定義相應(yīng)方法)。

我們可以用多種方法實現(xiàn)。但人們通常用二種方法。第一種方法是只利用一個監(jiān)聽器以及多個if語句來決定是哪個組件產(chǎn)生的事件;第二種方法是使用多個內(nèi)部類來響應(yīng)不同組件產(chǎn)生的各種事件,其具體實現(xiàn)又分兩種方式,一種是匿名內(nèi)部類,一種是一般內(nèi)部類。

為了說明如何使用上述方法實現(xiàn)事件的處理方法,我們建立一個簡單的應(yīng)用程序。該程序界面有兩個按鈕,當(dāng)用戶點擊相應(yīng)的按鈕,就會彈出一個對話框顯示相應(yīng)的內(nèi)容。通過這個簡單程序,你可以實現(xiàn)自己更多、更復(fù)雜的用戶界面程序。

首先,我們利用單個監(jiān)聽器來實現(xiàn)該程序。我們定義一個名為Simple1的類來包括所有代碼。所有的用戶行為(如點擊按鈕)由一個監(jiān)聽器SimpleListenner中的actionPerformed方法來處理。以下是代碼:

  1. import java.awt.*;  
  2. import java.awt.event.*;  
  3. import javax.swing.*;  
  4. public class Simple3  
  5. {  
  6. private static JFrame frame; // 定義為靜態(tài)變量以便main使用  
  7.  
  8. private static JPanel myPanel; // 該面板用來放置按鈕組件  
  9.  
  10. private JButton button1; // 這里定義按鈕組件  
  11.  
  12. private JButton button2; // 以便讓ActionListener使用  
  13. // 利用一般內(nèi)部類來監(jiān)聽每一個事件源產(chǎn)生的事件如(button1, button2)  
  14.  
  15. private class Button1Handler implements ActionListener  
  16. {  
  17. public void actionPerformed(ActionEvent e)  
  18. {  
  19. JOptionPane.showMessageDialog(frame,  
  20. "按鈕1 被點擊");  
  21. }  
  22. }  
  23. private class Button2Handler implements ActionListener  
  24. {  
  25. public void actionPerformed(ActionEvent e)  
  26. {  
  27. JOptionPane.showMessageDialog(frame,  
  28. "按鈕2 被點擊");  
  29. }  
  30. }  
  31. public Simple3() // // 構(gòu)造器, 建立圖形界面  
  32.  
  33. {  
  34. // 新建面板  
  35.  
  36. myPanel = new JPanel();  
  37. // 新建按鈕  
  38.  
  39. button1 = new JButton("按鈕1"); // 新建按鈕1  
  40.  
  41. button2 = new JButton("按鈕2");  
  42. // 對每一個組件注冊監(jiān)聽內(nèi)部類  
  43.  
  44. button1.addActionListener(new Button1Handler());  
  45. button2.addActionListener(new Button2Handler());  
  46. myPanel.add(button1); // 添加按鈕到面板  
  47.  
  48. myPanel.add(button2);  
  49. }  
  50. public static void main(String s[])  
  51. {  
  52. Simple3 gui = new Simple3(); // 新建Simple3組件  
  53.  
  54. frame = new JFrame("Simple3"); // 新建JFrame  
  55. // 處理關(guān)閉事件的通常方法  
  56.  
  57. frame.addWindowListener(new WindowAdapter() {  
  58. public void windowClosing(WindowEvent e)  
  59. {System.exit(0);} });  
  60. frame.getContentPane().add(myPanel);  
  61. frame.pack();  
  62. frame.setVisible(true);  
  63. }  

以上分析了在Java Swing中事件的處理方式,其中利用一般內(nèi)部類來實現(xiàn)的方法,從代碼書寫、閱讀、維護(hù)以及程序的可擴展性角度來看,最為值得推薦供大家使用。

【編輯推薦】

  1. Swing應(yīng)用的數(shù)據(jù)驗證
  2. 淺談Swing和SWT比較
  3. 應(yīng)該改進(jìn)的Java Swing 2.0
  4. 淺析Swing Set示例
  5. Swing中的JFormattedTextField組件實例
責(zé)任編輯:佚名 來源: 機械工業(yè)出版社
相關(guān)推薦

2009-06-09 16:53:22

Java Swing處理方法比較

2012-03-26 12:23:25

JavaSwing

2009-07-17 10:31:18

paint方法Swing組件

2013-02-21 16:51:18

JavaNimbusJava Swing

2009-07-15 11:19:17

invokeLaterSwing

2009-07-15 18:06:38

Swing線程

2009-07-10 09:38:06

Java swing組

2009-07-17 10:42:06

Swing應(yīng)用程序處理函數(shù)

2009-07-17 16:41:48

actionPerfoSwing

2010-08-09 09:47:34

Flex事件機制

2011-08-01 14:26:41

iPhone 應(yīng)用程序 事件

2009-07-15 16:29:41

Swing繪畫

2009-07-15 10:06:54

Swing實現(xiàn)MDI

2009-09-07 15:21:38

Java與C#事件處理

2010-08-09 11:14:36

Flex事件處理

2015-11-06 13:59:01

JavaScript事件處理

2009-08-12 15:20:21

C#事件處理

2009-07-17 09:55:02

事件監(jiān)聽器SWT和SwingAWT

2012-01-17 14:09:54

JavaSwing

2009-07-10 14:20:01

AcceleratorJava Swing
點贊
收藏

51CTO技術(shù)棧公眾號