`
rcyl2003
  • 浏览: 236952 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

JDIC(JDesktop Integration Components)

阅读更多

摘要

相关下载https://jdic.dev.java.net
本文简单介绍了JDIC(JDesktop Integration Components)的用途,以及以实例的形式教你如何使用JDIC调用或者整合本地桌面环境的组件或应用程序。


如果你经常访问java.net,或者读过JavaOne的新闻报道,你可能听过Jdesktop Integration Components(JDIC)。这些新的API终于能让Java开发人员做那些我们曾经羡慕本地同胞们所做的那些事情了。本文将给你一个有关JDIC特性的全面介绍,每一个特性都带有一个小例子,以及要迈出第一步该下载些什么的一个列表。除了SaverBeans子项目我们要在第二部分介绍外,我们将试验所有的API

JDesktop Integration Components,或JDIC,是一个给Java开发人员提供通过交差平台API存取本地特性的包罗万象的项目。该项目由Sun的Desktop组启动,目的是让Java应用能更好地和它们所运行的桌面环境集成。为了能从开发人员那里得到想要的特性的快速反馈,他们将JDIC做成了开源项目。尽管目前没有计划,但JDIC团队正考虑把JDIC的特征加入Java核心类库的未来版本中去

JDIC分为五个部分和一个孵化中的项目:


l 桌面:为了打开、编辑和用email邮寄文件来打开桌面程序;

l 文件类型:设置桌面文件类型关联;

l 浏览器:在AWT画布上嵌入本地浏览器(Internet Explorer或者Mozilla);

l 包装器:把Java Web Start程序转换成本地安装程序的命令行工具;

l 托盘API:支持系统托盘图标和弹出式菜单;

l SaverBeans:Java中的系统屏幕保护;

 

桌面组件
桌面组件是最简单和可能是最有用的JDIC组件了。它专用于基本的桌面服务,如在正确的编辑器里打开一个文件,新建一封Email,或者把一个URL发送到默认的web浏览器。构建这些东西需要做很多的工作,但使用起来却非常容易。如果你想告诉操作系统打开一个Word文档,调用Desktop.open(new File(“resume.doc”));就可以了,就这么简单。

Org.jdesktop.jdic.desktop包只有三个类:Desktop,Message和DesktopException。Desktop类是静态的不能被实例化。它有几个打开、编辑和打印文件的方法。你也能打开一个新的email和用文本填充它。这就是Message使用的地方,它能让你设置接收人,邮件体,附件,和其他部分。

有关Desktop组件包最好的事就是它用起来是多么地简单。你不需要注册任何特殊的驱动或者修改基于当前平台的配置。这些东西都已经在幕后做好了。只要你的jdic.jar文件在你的类路径中和本地库在你的库路径中(通常你把它和.jar文件放在一起),代码就可以工作了。下边是一个启动一个浏览器的在线例子:

import org.jdesktop.jdic.desktop.*;
import java.net.*;
public class DesktopTest {
    public static void main(String[] args)
            throws Exception {
        Desktop.browse(
            new URL("http://www.yahoo.com/")
            );
    }
}
 

文件类型组件
JDIC的下一个核心组件是文件类型包,它用来设置文件类型关联。这意味着你能告诉操作系统什么文件用什么程序打开,例如总是用Word打开文本文件而不是用写字板打开。用这个API你能查询、设置和删除基于文件扩展名和mime类型的文件类型关联。

假如那个文件类型通常是某种操作系统上特有的,检索关联或者注册应用本身而不是设置关联时,这个API显得更为有用。例如,在Windows下,通常的文本文件的关联是调用在众所周知的目录下的notepad.exe。在Gnome下,它可能调用/usr/local/bin/gedit。由于这是和系统相关的,除了把java应用绑定到自己文件的类型,设置关联可能不是非常有用。尽管如此,不管你用它做什么,文件类型组件通过处理注册表和MIME类型数据的方式为你处理了所有繁重的工作。

下边是一个设置文件关联的简短的例子:

import org.jdesktop.jdic.filetypes.*;
import java.net.*;
public class FileTypesTest {
    public static void main(String[] args)
        throws Exception {
   
        Action action = new Action("open",
                 "C:WINDOWSsystem32
otepad.exe %1");
       
        Association assoc = new Association();
        assoc.addFileExtension(".mchat");
        assoc.setMimeType("application/mad-chatter");
        assoc.addAction(action);
       
        AssociationService svc = new AssociationService();
        svc.registerUserAssociation(assoc);
       
    }
}
 


Main方法的前两行创建了一个将会用notepad.exe打开文件(用%1代替)的Action。之后的四行在action和扩展名为.mchat的文件之间创建了关联。在过去,大多数操作系统专门依赖于文件扩展名或者所有的元数据来确定文件类型。然而在今天,大多数操作系统倾向于为所有文件设置MIME,因此,现在开始使用它是有益的。最后两行实际上是在系统上注册关联。在使用所有的JDIC API时,只要本地库在你的库路径上,让它工作起来你不需要做任何特别的事情。

浏览器组件
JDIC的第三个主要组件是浏览器组件。不象前边的两个,它们只是让你存取系统服务,这个组件给你了一个真正在图形应用里使用的AWT器件。以前,你可以使用第三方的嵌入式组件或纯java的浏览器,但JDIC让你把用户默认的web浏览器嵌入到你的应用中,这些为我们创造了很多机会。现在写一些有全面Web支持的RSS阅读器变成了可能的事情。由于你不必把本地浏览器包含进你的应用中,下载速度也更快了。

浏览器组件API可以让你访问几个浏览器事件以及在历史记录上的控制(向前,后退,刷新)。未来修订的API版本希望能提供更多存取浏览器和任意装载的文档的功能。

在你的应用里使用浏览器组件实在是非常容易:

import org.jdesktop.jdic.browser.*;
import java.net.*;
import javax.swing.*;
 
public class BrowserTest {
    public static void main(String[] args) throws Exception {
       
        WebBrowser browser = new WebBrowser();
        browser.setURL(new URL("http://java.net"));
       
        JFrame frame = new JFrame("Browser Test");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add(browser);
        frame.pack();
        frame.setSize(500,500);
        frame.setVisible(true);
    }
}
 

正如你所看到的那样,WebBrowser对象仅仅是一个你可以把它放入一个标准的Jframe中的AWT组件。Main方法的第一行创建了一个新的WebBrowser,第二行设置了你想显示的URL。其他的代码创建了一个frame,把浏览器加入其中,并使得frame可见

 

记住WebBrowser是个本地AWT组件,因此你可能陷入与Swing结合的困境。混合它们的两个规则是 1)不要让Swing和AWT组件重叠和 2)在你的菜单上调用setLightWeightPopupEnabled(false)否则它们将消失在浏览器组件后边。

浏览器组件将立刻使用用户的默认Web浏览器,它们通常是Internet Explorer或Mozilla。你不能象使用Jrex(http://jrex.mozdev.org/)那样把Mozilla的必须的部分和你的应用绑在一起。这种做法可能在Windows上行得通,IE绝对是可以的,但在Linux上有更多的问题,因为它上边的默认浏览器不一定是Mozilla(例如,在KDE上它可能是Konquorer)。希望这些问题随着项目的成熟能够解决,但目前它对许多项目是很有用的。

包装器组件
不象其他的JDIC,包装器模块不是API,而是把JNLP(Java Web Start)应用转换成本地安装程序(Linux上是rpms,Solaris上是pkgs,Windows上是msis)的一组命令行工具。这不是说象Jsmooth或JexePack那样把你的应用转换成.exe;它仅仅为Web Start应用提供点击安装的功能。在程序安装之后,它将使用JNLP通过Internet更新自己,做Web Start应用能做的所有的其他事情。

包装器组件需要J2SE5.0和本地工具。对Windows而言,你需要安装Microsoft的MSI SDK。一旦你的环境建立了起来,就能使用命令行工具jnlp2msi,jnlp2rpm,和jnlp2pkg把你的Web Start应用转换成与平台相关的安装程序。

系统托盘
托盘图标API曾是一个孵化中项目,但由于java.net社区的勤奋努力,它已经成熟并把它提升到一个完全的JDIC组件的地位。假如你的操作系统有托盘的概念的话,它的目的是在屏幕的右下角创建小程序状态图标。实际上,这种操作系统是指Windows和Linux。Mac OS X用户则没有这个运气。它也支持弹出菜单和为图标提供自动工具提示。象其他JDIC一样,系统托盘支持需要本地代码,但你可以用Java API编码来使用预编译的本地库。

由于这个API使用范围非常小,所以它们只有两个类: SystemTray和TrayIcon。SystemTray类有一个静态工厂方法用于存取系统的默认托盘。TrayIcon让你把一个JpopupMenu和Icon添加到系统托盘的下一个可用的位置上。最后,调用SystemTray.getDefaultSystemTray().addTrayIcon()显示你的弹出菜单。让我们研究一个小例子:

import org.jdesktop.jdic.tray.*;
import java.awt.event.*;
import javax.swing.*;
 
public class SystemTrayTest {
    public static JMenuItem quit;
   
    public SystemTrayTest() {
        JPopupMenu menu = new JPopupMenu("My Menu");
        menu.add(new JMenuItem("Test 1"));
        menu.add(new JMenuItem("Test 2"));
        quit = new JMenuItem("Quit");
        quit.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                System.exit(0);
            }});
 
        menu.add(quit);
       
        ImageIcon icon = new ImageIcon("duke.gif");
        TrayIcon tray_icon = new TrayIcon(icon, "System Tray Test!", menu);
       
        SystemTray tray = SystemTray.getDefaultSystemTray();
        tray.addTrayIcon(tray_icon);
    }
    public static void main(String[] args) {
        new SystemTrayTest();
    }
   
}
 

 
在SystemTrayTest构造函数的前边的几行我们用三个菜单项创建了一个JpopupMenu。最后一个是quit,增加了一个ActionListener用于退出程序。现在,除了把菜单添加到菜单条上和Jcomponent上外,我们把菜单放进了TrayIcon的构造函数里。显示系统托盘图标的ImageIcon连同工具提示文字也传进了TrayIcon里。最后,我们把TrayIcon添加到默认的SystemTray上,程序就完成了。把tray.jar和tray.dll分别放到类路径和库路径中(通常是工作路径)。

 

TrayAPI也支持动画GIF图标和左键动作。用这个API,你就能让你的应用程序在你需要的时候才显示在任务条上。

孵化器项目
从一开始,JDIC设计的目的是积极鼓励和开发新的API。为了方便项目的成长,他们创建了孵化器项目,在那里开发人员可以提交他们的代码和试验他们的想法。如果他们的想法不错并实现成熟,项目就可以提升为一个完全的JDIC模块甚至发展成为一个新的项目。

SaverBeans SDK
我过去保留我最喜爱的API。现在,JDIC有一个主要的孵化器项目:一个叫做SaverBeans的创建交差平台屏保的工具包。象其他JDIC一样,你可以用Java做全部编码,让预建好的本地库处理大量的细节。该项目由处理回调的API,一个用于配置的xml文件,和一个用平台支持文件产生平台相关屏幕保护可执行程序(在Windows上是.scr,在Unix上是shell脚本)的Ant任务组成。

写一个屏保要比用其他的API更复杂些,因此我把这部分放在本系列中的第二部分加以描述。然而,如果你想立刻开始学习,你可以下载SDK(https://jdic.dev.java.net/documentation/incubator/screensaver/)和一些社区做好的屏保程序 

分享到:
评论

相关推荐

    JDIC(JDesktop Integration Components)

    Java的GUI内嵌浏览器JDIC(JDesktop Integration Components)所需要的jar包以及dll文件,包括 jdic.jar、 jdic.dll 、tray.all 、IeEmbed.exe

    JDIC(JDesktop Integration Components).jar

    JDIC,全称为JDesktop Integration Components,是一款专为Java开发者设计的开源库,它提供了丰富的功能,使得Java应用程序能够更好地与桌面环境集成。这个库由Sun Microsystems开发,并且在后来的Oracle时代继续...

    The JDesktop Integration Components (JDIC)

    The JDesktop Integration Components (JDIC) 有人提出分数太高,但是我无法修改分数,可以给大家提供别人的下载地址,希望能对你们有帮助 http://download.csdn.net/source/499302

    JDesktop+Integration+Components.pdf

    《JDesktop+Integration+Components.pdf》是一份详尽介绍了JDIC(JDesktop Integration Components)项目的文档,旨在为Java开发者提供一种方法,使他们能够更好地融合Java应用程序与本机操作系统的特性,从而提升...

    jdic-all.jar

    java webbrower,JDIC开发...JDIC 全程是 JDesktop Integration Components 目的是构建消除本机应用程序和 Java 等价物之间差距的组件。JDIC 单一的 Java API 允许应用程序接进本机操作系统特性,同时保持跨平台支持。

    JDIC开发用到的dll文件

    JDIC 全程是 JDesktop Integration Components,是构建消除本机应用程序和 Java 等价物之间差距的组件。JDIC 单一的 Java API 允许应用程序接进本机操作系统特性,同时保持跨平台支持。

    利用JAVA实现网页浏览器的方法

    本文将为您详细介绍如何使用 JAVA 实现网页浏览器,使用 JDIC(JDesktop Integration Components)组件来嵌入网页浏览器。 标题:利用 JAVA 实现网页浏览器的方法 描述:JAVA 实现网页浏览器 标签:JAVA 实现网页...

    JDIC应用

    JDIC(JDesktop Integration Components)是一个开源项目,旨在帮助Java开发者在桌面应用程序中集成本地操作系统特性,从而使得Java应用能够更接近本机应用程序的用户体验。该项目由一系列组件组成,允许开发者利用...

    java开发浏览器的jdic安装包

    Java开发浏览器时,JDIC(Java Desktop Integration Components)是一个非常重要的工具包,它为Java应用程序提供了与本地桌面环境集成的能力,特别是与Web浏览器交互的功能。本文将深入介绍JDIC的相关知识点,帮助...

    浏览器解析

    JDIC(JDesktop Integration Components)是一个开源的项目,目的是构建消除本机应用程序和 Java 等价物之间差距的组件。JDIC单一的 Java API 允许应用程序接进本机操作系统特性,同时保持跨平台支持。它目前提供了...

    tray64.zip

    tray 64位上传文件,用于jdic中的dll库,JDIC 全程是 JDesktop Integration Components 目的是构建消除本机应用程序和 Java 等价物之间差距的组件。JDIC 单一的 Java API 允许应用程序接进本机操作系统特性,同时...

    Rich Clients with SWING.pdf

    - **开源项目与集成组件**:Sun Microsystems推出了JDNC(Java Desktop Networking Components)和JDIC(JDesktop Integration Components)两个开源项目。这些项目旨在为跨平台Java应用提供无缝的桌面集成解决方案...

    java浏览器 jdic webbrowser 支持系统托盘,支持截屏

    本项目利用了JDIC(Java Desktop Integration Components)库,这是一个用于增强Java应用程序与桌面环境集成的开源库,特别适合于创建具有系统托盘功能和屏幕截图能力的浏览器。 JDIC库提供了对操作系统原生功能的...

    JAVA浏览器

    该组件通过JDesktop Integration Components(JDIC)库实现,这是一个开源项目,旨在弥合Java应用程序与本机操作系统特性之间的差距。 JDIC的核心目标是提供一个统一的Java API,使Java应用能在不失去跨平台能力的...

    基于java的浏览器的设计实现.ppt

    此外,还利用了JDIC(JDesktop Integration Components)类库,这是一个开源项目,旨在减少本地应用程序与Java应用程序之间的差距。JDIC提供了一个单一的Java API,允许开发者访问本地操作系统的特性,如集成Web...

    jdic IeEmbed tray组件

    **Java Desktop Integration Components (JDIC)** 是一个开源的Java库,它为Java应用程序提供了与桌面环境集成的能力。这个库特别包含了一个名为 **IeEmbed** 的组件,这使得Java程序可以嵌入Internet Explorer(IE...

    Swing显示Html网页

    Swing显示HTML网页是Java开发GUI应用程序时的一个常见需求,主要涉及到Java的Swing库以及相关的第三方库,如JDIC(Java Desktop Integration Components)。本文将详细介绍如何在Swing界面中集成HTML网页显示功能。 ...

Global site tag (gtag.js) - Google Analytics