程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 用JDK6中新特性快速把JLabel做成超鏈接

用JDK6中新特性快速把JLabel做成超鏈接

編輯:關於JAVA

用過NetBeans的朋友可能會發現,在NB的窗體界面中,有一些JLabel以圖標形式出現,當鼠標點擊這些label標簽時,會自動打開我們的浏覽器,並導航到相應的網站。

這個功能看起來似乎比較簡單,可能有的朋友會想到用Runtime來調用本地浏覽器。但這個方法太呆板了,有很大的局限性。首先,如果通過本地路徑來調用,勢必在可移植性上打了折扣。因為不同系統之間,不可能有相同的系統路徑。其次,如果用戶有多個浏覽器,如既安裝了ie還安裝了firefox,而用戶平時更喜歡在Firefox中浏覽網頁,我們就不能強迫他用IE來打開我們要顯示的信息。

而我們現在不需要為這些功能費腦細胞了,因為在JDK6中新增加的Desktop類為我們解決了這個問題。它不僅允許我們可以檢測並打開默認浏覽器,還允許我們檢測並打開默認的郵件客戶端,以及打開編輯和打印文件的功能。

這裡我只給大家演示打開默認浏覽器的功能,實現這樣一個功能很簡單,我們可以把它封裝到一個類中,如果我們想把一個帶圖標的JLabel做成一個超鏈接效果,就可以給JLabel組件增加鼠標事件,來調用我們下邊的代碼,打開系統的默認浏覽器。

代碼如下:

package org.anthrax;

import java.awt.Cursor;
import java.awt.Desktop;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URI;
import Java.Net.URISyntaxException;
import Javax.swing.JLabel;

/**
*
* @author Anthrax
*此類負責檢測系統的默認浏覽器等程序,並負責啟動它們
* @netSite 指定要顯示的網址
*/
public class DesktopRuner {
  private Desktop desktop;
  private URI uri;
  private String netSite;
  private Cursor hander;
  /** Creates a new instance of DesktopRuner */
  public DesktopRuner() {
    this.desktop = Desktop.getDesktop();
  }
  /*
  *檢測系統是否支持浏覽器
  */
  public boolean checkBroswer(){
    if(desktop.isDesktopSupported() && desktop.isSupported(Desktop.Action.BROWSE)){
        return true;
    }
    else{
        return false;
    }
  }
  /*
  *運行默認浏覽器,並在其中顯示指定網址
  */
  public void runBroswer(){
    netSite = "http://mybass.china-pub.com";
    try {
        uri = new URI(netSite);
    } catch (URISyntaxException ex) {
        ex.printStackTrace();
    }
    try {
        desktop.browse(uri);
    } catch (IOException ex) {
        ex.printStackTrace();
    }
  }
  /*
  *改變鼠標形狀
  */
  public void changeMouse(JLabel label){
    hander = new Cursor(Cursor.HAND_CURSOR);
    label.setCursor(hander);
  }
}
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved