標籤和按鈕也許是圖形介面中最常見的兩種元件,按鈕又總是與激發動作事件有關。
標籤
標籤(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.為需要控制的按鈕物件註冊監視器,對在這個按鈕上產生的事件實施監聽。如果是按鈕物件所在的類別實作監視接口,註冊監視器的程式碼形式是
addActionListener(this);
參見【例11-3】,如果是別的類別A的物件a作為監視器,類別A必須實作ActionListener接口,完成監視器註冊需用以下形式的兩行程式碼:
A a = new A(); //创建类A的实例a addActionListener(a); //用对象a作为监视器对事件进行监视。
6.在實作介面ActionListener的類別中,給予處理事件的方法的定義:
public void actionPerformed(ActionEvent e);
在處理事件的方法中,用取得事件來源資訊的方法獲得事件來源信息,並判斷和完成相應處理。取得事件來源的方法有:方法 getSource()取得事件來源物件;方法getActionCommand()取得事件來源按鈕的文字資訊。
【例11-3】處理按鈕事件實例,應用程式定義了一個窗口,視窗內設定兩個按鈕,當點擊Red按鈕時,視窗的背景色置成紅色;點擊Green按鈕時,視窗的背景色置成綠色。
import javax.swing.*;import java.awt.*;import java.awt.event.*; public class J503{ public static void main(String[]args){ ButtonDemo myButtonGUI=new ButtonDemo();//声明并创建按钮对象 myButtonGUI.setVisible(true); } } class ButtonDemo extends JFrame implements ActionListener{ public static final int Width=250; public static final int Height=200; ButtonDemo(){ setSize(Width,Height); setTitle("按钮事件样例"); Container conPane=getContentPane(); conPane.setBackground(Color.BLUE); conPane.setLayout(new FlowLayout());//采用FlowLayout布局 JButton redBut=new JButton("Red"); redBut.addActionListener(this);//给Red按钮注册监视器 conPane.add(redBut);//在窗口添加Red按钮 JButton greenBut=new JButton("Green"); greenBut.addActionListener(this);//给Green按钮注册监视器 conPane.add(greenBut);//在窗口添加Green按钮 } public void actionPerformed(ActionEvent e){//实现接口处理事件的方法 Container conPane=getContentPane(); if(e.getActionCommand().equals("Red"))//是Red按钮事件 conPane.setBackground(Color.RED); else if(e.getActionCommand().equals("Green"))//是Green按钮事件 conPane.setBackground(Color.GREEN); else{} } }
用滑鼠點擊按鈕產生事件對象,將事件送達對象,這個過程稱為激發事件。當一個事件被送到監視器物件時,監視器物件實現的介面方法被調用,調用時系統會提供事件物件的參數。程式中雖然沒有呼叫監視器方法的的程式碼,但是程式做了兩件事:第一,指定哪一個物件是監視器,它將回應由按鈕的激發的事件,這個步驟稱為監視器註冊。第二,必須定義一個方法,當事件送到監視器時,這個方法將會被呼叫。程式中沒有呼叫這個方法的程式碼,這個呼叫是系統執行的。
在上面的程式中,程式碼
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基礎之標籤、按鈕和按鈕事件簡介相關文章請關注PHP中文網!