java网页浏览器_利用Java实现网页浏览器

浏览器组件

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("//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(//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更复杂些,因此我把这部分放在本系列中的第二部分加以描述。

来源:考试大-Java认证

责编:xxm  评论 纠错

2下一页

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java代码编写的简单网页浏览器,仿IE基础功能,只能解析标准的HTML文件,现在流行的HTML5格式不能解析。使用方法:可直接输入文件名或网络地址,但必需事先连入网络。   JTextField jtfAddress; //输入html文件地址或网址   JButton jbGo; //转到文件按钮   JTextPane jtpShow; //显示文件   JLabel jlInfo; //提示信息   public HTTPBrowserDemo(){    super("html浏览器"); //调用父类构造函数    jtfAddress=new JTextField(20); //实例化地址输入框    jbGo=new JButton("转到"); //实例化转向按钮    jtpShow=new JTextPane(); //实例化显示内容框    jlInfo=new JLabel(); //实例化信息提示标签    JPanel panel=new JPanel(); //实例化面板    panel.add(new JLabel("地址")); //增加组件到面板上    panel.add(jtfAddress);    panel.add(jbGo);    JScrollPane jsp=new JScrollPane(jtpShow); //实例化滚动窗体    Container container=getContentPane(); //得到容器    container.add(panel,BorderLayout.NORTH); //增加组件到容器上    container.add(jsp,BorderLayout.CENTER);    container.add(jlInfo,BorderLayout.SOUTH);    jbGo.addActionListener(new ShowHTMLListener()); //事件处理,发生按钮点击时显示页面内容    jtfAddress.addActionListener(new ShowHTMLListener());    setSize(350,280); //设置窗口尺寸    setVisible(true); //设置窗口可视    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口时退出程序   }   class ShowHTMLListener implements ActionListener { //显示页面内容事件处理    public void actionPerformed(ActionEvent event) {    try{    jlInfo.setText("正在连接..."); //显示提示信息    URL address=new URL(jtfAddress.getText()); //得到HTML页面的URL地址    jtpShow.setPage(address); //设置显示页面    jlInfo.setText("完成");    }    catch (Exception ex){    jlInfo.setText("连接出错");    ex.printStackTrace(); //输出出错信息    }    }   }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值