Java知多少(82)標籤、按鈕和按鈕事件簡介

來源:互聯網
上載者:User

標籤:

標籤和按鈕也許是圖形介面中最常見的兩種組件,按鈕又總是與激發動作事件有關。

標籤

標籤(JLabel)是最簡單的Swing組件。標籤對象的作用是對位於其後的介面組件作說明。可以設定標籤的屬性,即前景色彩,背景色、字型等,但不能動態地編輯標籤中的文本。

程式關於標籤的基本內容有以下幾個方面:

  1. 聲明一個標籤名;
  2. 建立一個標籤對象;
  3. 將標籤對象加入到某個容器。


JLabel類的主要構造方法是:

  1. JLabel ():構造一個無顯示文字的標籤;
  2. JLabel (String s):構造一個顯示文字為s的標籤;
  3. JLabel(String s, int align):構造一個顯示文字為s的標籤。align為顯示文字的水平方式,對齊有三種:
    • 靠左對齊:JLabel.LEFT
    • 中心對齊:JLabel.CENTER
    • 靠右對齊:JLabel.RIGHT


JLabel類的其他常用方法是:

  1. setText(String s):設定標籤顯示文字;
  2. getText():擷取標籤顯示文字;
  3. setBackground(Color c):設定標籤的背景顏色,預設背景顏色是容器的背景顏色;
  4. setForeground(Color c):設定標籤上的文字的顏色,預設顏色是黑色。
按鈕

按鈕(JButton)在介面設計中用於激發動作事件。按鈕可顯示文本,當按鈕被啟用時,能激發動作事件。

JButton常用構造方法有:

  1. JButton():建立一個沒有標題的按鈕對象;
  2. JButton(String s):建立一個標題為s的按鈕對象。


JButton類的其他常用方法有:

  1. setLabel(String s):設定按鈕的標題文字。
  2. getLabel():擷取按鈕的標題文字。
  3. setMnemonic(char mnemonic):設定熱鍵
  4. setToolTipText(String s):設定提示文字。
  5. setEnabled(boolean b):設定是否響應事件
  6. setRolloverEnabled(boolean b):設定是否可滾動。
  7. addActionListener(ActionListener aL):向按鈕添加動作監視器。
  8. removeActionListener(ActionListener aL):移動按鈕的監視器。


按鈕處理動作事件的基本內容有以下幾個方面:

  1. 與按鈕動作事件相關的介面是ActionListener,給出實現該介面的類的定義;
  2. 聲明一個按鈕名;
  3. 建立一個按鈕對象;
  4. 將按鈕對象加入到某個容器;
  5. 為需要控制的按鈕對象註冊監視器,對在這個按鈕上產生的事件實施監聽。如果是按鈕對象所在的類實現監視介面,註冊監視器的代碼形式是
    1     addActionListener(this);

     

    參見【例 11-3】,如果是別的類A的對象a作為監視器,類A必須實現ActionListener介面,完成監視器註冊需用以下形式的兩行代碼:
    1     A a = new A();  //建立類A的執行個體a2     addActionListener(a);  //用對象a作為監視器對事件進行監視。

     

  6. 在實現介面ActionListener的類中,給出處理事件的方法的定義:
    1     public void actionPerformed(ActionEvent e);

     

在處理事件的方法中,用擷取事件來源資訊的方法獲得事件來源資訊,並判斷和完成相應處理。獲得事件來源的方法有:方法 getSource()獲得事件來源對象;方法getActionCommand()獲得事件來源按鈕的文字資訊。
 1 【例 11-3】處理按鈕事件執行個體,應用程式定義了一個視窗,視窗內設定兩個按鈕,當點擊Red按鈕時,視窗的背景色置成紅色;點擊Green按鈕時,視窗的背景色置成綠色。

 2 import javax.swing.*;import java.awt.*;import java.awt.event.*; 3 public class J503{ 4     public static void main(String[]args){ 5         ButtonDemo myButtonGUI=new ButtonDemo();//聲明並建立按鈕對象 6         myButtonGUI.setVisible(true); 7     } 8 } 9 class ButtonDemo extends JFrame implements ActionListener{10     public static final int Width=250;11     public static final int Height=200;12     ButtonDemo(){13         setSize(Width,Height); setTitle("按鈕事件範例");14         Container conPane=getContentPane();15         conPane.setBackground(Color.BLUE);16         conPane.setLayout(new FlowLayout());//採用FlowLayout布局17         JButton redBut=new JButton("Red");18         redBut.addActionListener(this);//給Red按鈕註冊監視器19         conPane.add(redBut);//在視窗添加Red按鈕20         JButton greenBut=new JButton("Green");21         greenBut.addActionListener(this);//給Green按鈕註冊監視器22         conPane.add(greenBut);//在視窗添加Green按鈕23     }24     public void actionPerformed(ActionEvent e){//實現介面處理事件的方法25         Container conPane=getContentPane();26         if(e.getActionCommand().equals("Red"))//是Red按鈕事件27             conPane.setBackground(Color.RED);28         else if(e.getActionCommand().equals("Green"))//是Green按鈕事件29             conPane.setBackground(Color.GREEN);30         else{}31     }32 }

用滑鼠點擊按鈕產生事件對象,將事件送達對象,這個過程稱為激發事件。當一個事件被送到監視器對象時,監視器對象實現的介面方法被調用,調用時系統會提供事件對象的參數。程式中雖然沒有調用監視器方法的的代碼,但是程式做了兩件事:第一,指定哪一個對象是監視器,它將響應由按鈕的激發的事件,這個步驟稱為監視器註冊。第二,必須定義一個方法,當事件送到監視器時,這個方法將被調用。程式中沒有調用這個方法的代碼,這個調用是系統執行的。


在上面的程式中,代碼
    redBut.addActionListener(this);
註冊this作為redBut按鈕的監視器,隨後的代碼也註冊this作為greenBut按鈕的監視器。在上述的程式中,this就是當前的ButtonDemo對象myButtonGUI。這樣,ButtonDemo類就是監視器對象的類,對象MyButtonGUI作為兩個按鈕的監視器。在類ButtonDemo中有監視器方法的實現。當一個按鈕被點擊時,系統以事件的激發者為參數,自動調用方法actionPerformed ()。

組件不同,激發的事件種類也不同,監視器類的種類也不同。按鈕激發的事件稱為action事件,相應的監視器稱為action監視器。一個action監視器對象的類型為ActionListener,類要實現ActionListener介面。程式體現這些內容需要做到兩點:

  1. 在類定義的首行接上代碼implements ActionListener;
  2. 類內定義方法actionPerformed ()。


前面程式中的類ButtonDemo正確地做到了這兩點。

每個介面元素當激發事件時,都有一個字串與這個事件相對應,這個字串稱為action命令。用代碼 e.getActionCommand()就能擷取action事件參數e的命令字串,據此,方法actionPerformed()就能知道是哪一個按鈕激發的事件。在預設情況下,按鈕的命令字串就是按鈕上的文字。如有必要可以用方法 setActionCommand()為介面組件設定命令字串。

系列文章:

Java知多少(上)Java知多少(中)Java知多少(78)Java向量(Vector)及其應用Java知多少(79)雜湊表及其應用Java知多少(80)圖形介面設計基礎Java知多少(81)架構視窗基礎

Java知多少(82)標籤、按鈕和按鈕事件簡介

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.