服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

用jdk6中新特性快速把jlabel做成超链接

用过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);
  }
}

(t007)


扫描关注微信公众号