首頁 > Java > java教程 > 詳解java處理按鈕點擊事件的方法

詳解java處理按鈕點擊事件的方法

巴扎黑
發布: 2017-04-17 10:45:00
原創
7980 人瀏覽過

下面小編就為大家帶來一篇java處理按鈕點擊事件的方法。小編覺得蠻不錯的,現在就分享給大家,也給大家做個參考。一起跟著小編過來看看吧

不同的事件來源可以產生不同類別的事件。例如,按鈕可以傳送一個ActionEvent對象,而視窗可以傳送WindowEvent物件。

AWT時間處理機制的摘要:

#1. 監聽器物件是一個實作了特定監聽器介面(listener interface)的類別的實例。

2. 事件來源是能夠註冊監聽器物件並傳送事件物件的物件。

3. 當事件發生時,事件來源將事件物件傳遞給所有註冊的監聽器。

4. 監聽器物件將利用事件物件中的資訊決定如何對事件做出回應。

下面是監聽器的一個範例:


ActionListener listener = ...;
JButton button = new JButton("OK");
button.addActionListener(listener);
登入後複製

現在,只要按鈕產生了一個“動作事件”,listener物件就會得到通告。對於按鈕來說,正像我們想到的,動作事件就是點擊按鈕。

為了實作ActionListener接口,監聽器類別必須有一個被稱為actionPerformed的方法,該方法接收一個ActionEvent物件參數。


class MyListener implements ActionListener
{
 ...;
 public void actionPerformed(ActionEvent event)
 {
   //reaction to button click goes here
 }
}
登入後複製

只要使用者點選了按鈕,JButton物件就會建​​立一個ActionEvent對象,然後呼叫listener.actionPerformed(event)傳遞事件物件。可以將多個監聽器物件新增到一個像按鈕這樣的事件來源。這樣一來,只要使用者點擊按鈕,按鈕就會呼叫所有監聽器的actionPerformed方法。

實例:處理按鈕點擊事件

為了加深對事件委託模型的理解,下面以一個回應按鈕點擊事件的簡單範例來說明所需要知道的細節。在這個範例中,想要在一個面板中放置三個按鈕,並新增三個監聽器物件用來作為按鈕的動作監聽器。

在這個情況下,只要使用者點擊面板上的任何一個按鈕,相關的監聽器物件就會接收到一個ActionEvent對象,它表示有個按鈕被點擊了。在範例程式中,監聽器物件將改變面板的背景顏色。

在示範如何監聽按鈕點擊事件之前,首先需要先講解如何建立按鈕以及如何將他們新增到面板中。

可以透過在按鈕建構器中指定一個標籤字串、一個圖示或兩個項目都指定來建立一個按鈕。以下是兩個範例:


JButton yellowButton = new JButton("Yellow");
JButton blueButton = new JButton(new ImageIcon("blue-ball.gif"));
登入後複製

將按鈕加入面板中需要呼叫add方法:


JButton yellowButton = new JButton("Yellow");
JButton blueButton = new JButton("Blue");
JButton redButton = new JButton("Red");

buttonPanel.add(yellowButton);
buttonPanel.add(blueButton);
buttonPanel.add(redButton);
登入後複製

至此,知道如何將按鈕新增到面板上,接下來需要增加讓面板監聽這些按鈕的程式碼。這需要一個實作了ActionListener介面的類別。如前所述,應該包含一個actionPerformed方法,其簽名為:

public void actionPerformed(ActionEvent event)

#當按鈕點擊時,希望將面板的背景顏色設定為指定的顏色。這個顏色儲存在監聽器類別中:


class ColorAction implements ActionListener
{
  public ColorAction(Color c)
  {
   backgroundColor = c;
  }
  public void actionPerformed(actionEvent event)
  {
   //set panel background color
   }
   private Color backgroundColor;
}
登入後複製

然後,為每種顏色建構一個對象,並將這些物件設定為按鈕監聽器。


ColorAction yelloAction = new ColorAction(Color.YELLOW);
ColorAction blueAction = new ColorAction(Color.BLUE);
ColorAction redAction = new ColorAction(Color.RED);

yellowButton.addActionListener(yellowAction);
blueButton.addActionListener(blueAction);
redButton.addActionListener(redAction);
登入後複製

例如,如果一個使用者在標有「Yellow」的按鈕上點擊了一下,yellowAction物件的actionPerformed方法就會被呼叫。這個物件的backgroundColor實例域被設定為Color.YELLOW,現在就將面板的背景顏色設為黃色。

這裡還有一個需要考慮的問題。 ColorAction物件不能存取buttonpanel變數。可以用兩種方式解決這個問題。一個是將面板儲存在ColorAction物件中,並在ColorAction的建構器中設定它;另一個是將ColorAction作為ButtonPanel類別的內部類,如此,它的方法就自動地擁有存取外部面板的權限了。

下面說明如何將ColorAction類別放在ButtonFrame類別內。


class ButtonFrame extends JFrame
{
 ...
 private class ColorAction implents ActionListener
 {
  ...
  public void actionPerformed(ActionEvent event)
  {
    buttonPanel.setBackground(backgroundColor);
  }
  private Color backgroundColor;
  }
  private Jpanel buttonPanel; 
}
登入後複製

以上是詳解java處理按鈕點擊事件的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板