標籤:ack 個數 col tool one 核心技術 有關 object 點擊
6.2 介面執行個體
6.2.1 介面與回調
在java.swing包中有一個Timer類,可以使用它在到達給定的時間間隔時發出通告,假如程式中有一個時鐘,就可以請求每秒鐘獲得一個通告,以便更新時鐘的錶盤。
在構造定時器時,需要設定一個時間間隔,並告知定時器,當到達時間間隔時需要做些什麼操作,(java將某個類的對象傳遞給定時器,然後的定時器調用這個對象的方法。)-----定時器需要知道調用了哪一個方法,並要求傳遞的對象所屬的的類實現了java.awt.event包的ActionListener介面。
1 public interface ActionListener2 {3 void actionPerformed(ActionEvent event);4 }
當到達指定的時間間隔時,定時器就調用actionPerformed方法。
接下來,構造這個類的一個對象,並將他傳遞給Timer構造器。
1 ActionListener listener =new TimePrinter();2 Timer t =new Timer(10000,listener);
下面程式給出了定時器和監聽器的操作行為,在定時器啟動以後,程式將彈出一個訊息對話方塊,並等待使用者點擊OK按鈕來終止程式的運行。定時時間為5秒;
1 package cc.openhome; 2 import java.awt.Toolkit; 3 import java.awt.event.ActionEvent; 4 import java.awt.event.ActionListener; 5 import java.util.Date; 6 import javax.swing.JOptionPane; 7 import javax.swing.Timer; 8 public class TimerTest { 9 public static void main(String[] args) {10 ActionListener listener =new TimePrinter();11 Timer t=new Timer(5000,listener);12 t.start();13 JOptionPane.showMessageDialog(null, "Quit program?");14 System.exit(0);15 } 16 }17 class TimePrinter implements ActionListener18 {19 public void actionPerformed(ActionEvent evet )20 {21 System.out.println("At the tone ,the time is "+new Date());22 Toolkit.getDefaultToolkit().beep();23 }24 }
At the tone ,the time is Sun Mar 18 10:28:51 CST 2018At the tone ,the time is Sun Mar 18 10:28:56 CST 2018At the tone ,the time is Sun Mar 18 10:29:01 CST 2018At the tone ,the time is Sun Mar 18 10:29:06 CST 2018At the tone ,the time is Sun Mar 18 10:29:11 CST 2018成功構建 (總時間: 26 秒)
run:
Api javax.swing.JOptionPane 1.2
static void showMessageDialog(ComPonent parent,Object message)
顯示一個包含一條訊息和OK按鈕的對話方塊,這個對話方塊將位於其parent組件的中央。
API javax.swing..Timer 1.2
Timer(int interval ,ActionListener Listener)
構造一個定時器,每隔interval毫秒通告listener一次。
void start()
啟動定時器。一旦啟動成功,定時器將調用監聽器的actionPerformed。
API void stop()
停止定時器,一旦停止成功,定時器將不在調用監聽器的actionPerformed。
java。awt.Toolkit 1.0
static Toolkit getDefaultToolkit()
獲得預設的工具箱。工具箱包含有關GUI環境的資訊。
void beep()
發出一聲鈴響。
6.2.2 Comparator介面
假設我們希望按長度遞增的順序對字串進行排序,而不是按字典順序進行排序。
處理這種情況,Arrays.sort方法還有第二個版本,有一個數組和一個比較子(comparator)作為參數,比較子實現了Comparator介面的類的執行個體。
public interface Comparator<T>{ int compara(T first,second);}
要按長度比較字串,可以如下定義一個實現Comparator<String>的類
class LengthComparator implements Comparator<String>{ public int compare(String first,String second) { return first.length()-second.length(); }}
具體完成比較時,需要建立一個執行個體:
Comparator<String> comp =new lengthComparator();
if (comp.compre(words[i],words[j]>0)...
要對一個數組排序,需要為Arrays.sort方法傳入一個LengthComparator對象:
String[] friengds ={"Peter","Paul","Mary"};
Arrays.sort(friends,new LengthComparator());
java 核心技術卷一筆記 6 .2介面 lambda 運算式 內部類