偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Java Swing事件處理方法

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

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

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

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

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

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

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

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

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

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

  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; // 該面板用來(lái)放置按鈕組件  
  9.  
  10. private JButton button1; // 這里定義按鈕組件  
  11.  
  12. private JButton button2; // 以便讓ActionListener使用  
  13. // 利用一般內(nèi)部類來(lái)監(jiān)聽(tīng)每一個(gè)事件源產(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 被點(diǎn)擊");  
  21. }  
  22. }  
  23. private class Button2Handler implements ActionListener  
  24. {  
  25. public void actionPerformed(ActionEvent e)  
  26. {  
  27. JOptionPane.showMessageDialog(frame,  
  28. "按鈕2 被點(diǎn)擊");  
  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. // 對(duì)每一個(gè)組件注冊(cè)監(jiān)聽(tīng)內(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)部類來(lái)實(shí)現(xiàn)的方法,從代碼書(shū)寫(xiě)、閱讀、維護(hù)以及程序的可擴(kuò)展性角度來(lái)看,最為值得推薦供大家使用。

【編輯推薦】

  1. Swing應(yīng)用的數(shù)據(jù)驗(yàn)證
  2. 淺談Swing和SWT比較
  3. 應(yīng)該改進(jìn)的Java Swing 2.0
  4. 淺析Swing Set示例
  5. Swing中的JFormattedTextField組件實(shí)例
責(zé)任編輯:佚名 來(lái)源: 機(jī)械工業(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 16:41:48

actionPerfoSwing

2009-07-17 10:42:06

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

2010-08-09 09:47:34

Flex事件機(jī)制

2009-07-15 16:29:41

Swing繪畫(huà)

2009-07-15 10:06:54

Swing實(shí)現(xiàn)MDI

2011-08-01 14:26:41

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

2009-09-07 15:21:38

Java與C#事件處理

2015-11-06 13:59:01

JavaScript事件處理

2009-08-12 15:20:21

C#事件處理

2009-07-17 09:55:02

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

2010-08-09 11:14:36

Flex事件處理

2012-01-17 13:46:55

JavaSwing

2009-07-16 11:13:50

Java Swing
點(diǎn)贊
收藏

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