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

用JDK6中新特性快速把JLabel做成超链接     
  
发布时间:
2007.05 . 21     05 : 26            来源:赛迪网技术社区         作者:dxaw   

用过NetBeans的朋友可能会发现,在NB的窗体界面中,有一些JLabel以图标形式出现,当鼠标点击这些label标签时,会自动打开我们的浏览器,并导航到相应的网站。   

这个功能看起来似乎比较简单,可能有的朋友会想到用Runtime来调用本地浏览器。但这个方法太呆板了,有很大的局限性。首先,如果通过本地路径来调用,势必在可移植性上打了折扣。因为不同系统之间,不可能有相同的系统路径。其次,如果用户有多个浏览器,如既安装了ie还安装了firefox,而用户平时更喜欢在firefox中浏览网页,我们就不能强迫他用ie来打开我们要显示的信息。   

而我们现在不需要为这些功能费脑细胞了,因为在JDK6中新增加的Desktop类为我们解决了这个问题。它不仅允许我们可以检测并打开默认浏览器,还允许我们检测并打开默认的邮件客户端,以及打开编辑和打印文件的功能。   

这里我只给大家演示打开默认浏览器的功能,实现这样一个功能很简单,我们可以把它封装到一个类中,如果我们想把一个带图标的JLabel做成一个超链接效果,就可以给JLabel组件增加鼠标事件,来调用我们下边的代码,打开系统的默认浏览器。   

代码如下:   


Java code
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);
  }

}

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值