中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Java > 基础 > Java语言基础
用JDK6中新特性快速把JLabel做成超链接
作者:dxaw 时间:2007-06-13 13:28 出处:ccidnet.com 责编:月夜寒箫
              摘要:用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);
            }
            }
关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有