`
luzl
  • 浏览: 573459 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

调用EZJComIExplorer18实现Java控制IE

    博客分类:
  • Java
阅读更多
最近在一个网站上看图,某一个帖子的图片都在一个页面,往下滚动的时候感觉眼花并且看不全,所以想开发一个简单的浏览器,实现功能就是填一个地址,然后把所有的图片解析出来,按上下键来浏览图片:
我用HtmlUnit很容易就解析到了所有图片:
HtmlPage page=webClient.getPage("http://www.xxx.com");
			Iterable<HtmlElement> iterable=page.getAllHtmlChildElements();
			Iterator<HtmlElement> hIterator=iterable.iterator();
			while (hIterator.hasNext()) {
				HtmlElement htmlElement = (HtmlElement) hIterator.next();
				if (htmlElement instanceof HtmlImage) {
					String imageurl=((HtmlImage)htmlElement).getAttributeValue("src");
					ShareURL.imageURLs.add(new URL(imageurl));
				}
			}

但是我得把图片显示出来在Java的JFRAME中,怎么办呢?我在Sun的Tutorial中搜到一个办法,就是利用Swing的控件来实现:
http://java.sun.com/docs/books/tutorial/uiswing/components/html.html
...
String initialText = "<html>\n" +
                "Color and font test:\n" +
                "<ul>\n" +
                "<li><font color=red>red</font>\n" +
                "<li><font color=blue>blue</font>\n" +
                "<li><font color=green>green</font>\n" +
                "<li><font size=-2>small</font>\n" +
                "<li><font size=+2>large</font>\n" +
                "<li><i>italic</i>\n" +
                "<li><b>bold</b>\n" +
                "</ul>\n";

        htmlTextArea = new JTextArea(10, 20);
        htmlTextArea.setText(initialText);
...
theLabel = new JLabel(initialText);
...

大概就是JLabel能够显示Html代码,JButton也可以用用Html代码生成,这个link也有:
button = new JButton("<html><b><u>T</u>wo</b><br>lines</html>");


但是因为我解析到的图片路径是远程的,不知为什么显示不出来,所以就想用嵌入浏览器的方式来实现,从google又搜索了一下,找到了标题中的EZJComIExplorer18,利用他的jar包中提供的方法很容易就实现了显示图片的功能,当然因为它可以嵌入到JFrame中,所以可准确控制它的navigation路径,上下按钮也可以用了,并且这个貌似还有其它功能,可以调用Microsoft的ActiveX控件.具体可以到他们的网站上了解.
[url]
http://ezjcom.com/
[/url]
我的嵌入浏览器到JFrame的代码大概是这段Sample code:
// Shows how to embed Internet Explorer in a Swing panel.
// Note that the examples of using IE Java API, as shown in
// other sample files, can also be used on this instance
// of IE.

import iexplorer.InternetExplorer; 
import iexplorer.IWebBrowserApp;  
import iexplorer.WebBrowser;  

import ezjcom.JComObject;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JPanel;
import javax.swing.JFrame;

import java.awt.BorderLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class WebFrame extends JFrame {


  WebBrowser browser;
  JButton button = new JButton();
  JLabel label = new JLabel( "URL: " );;
  JTextField url = new JTextField( 12 );
  JPanel buttonPanel = new JPanel();

  /** TO BE DONE 
   ** Change the string below to the "home" site for this program.
   **/

  String home = "http://www.your-home-site.com/";
 

  // This method is called when the Test button is clicked.
  void onButtonClick()
  {

    try {
      // Navigate to the URL typed.
      browser.getIWebBrowser2().Navigate( url.getText());
    } catch (Exception ex) {
      ex.printStackTrace();

    }
  }


  void showBrowser()

  {
    try {
      setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
      getContentPane().setLayout( new BorderLayout());
 
      // Create a container instance and add it to the frame.
      ezjcom.JComActiveXContainer activexContainer =
             new ezjcom.JComActiveXContainer();
      getContentPane().add( activexContainer, BorderLayout.CENTER );
      button.setText( "Navigate" );
      buttonPanel.add( label );
      buttonPanel.add( url );
      buttonPanel.add( button );
      getContentPane().add( buttonPanel, BorderLayout.SOUTH );
      button.addActionListener( new ActionListener() {
          public void actionPerformed( ActionEvent e ) { onButtonClick(); }
        });

 
      // Create the ActiveX object and attach it to the container.
      browser = new WebBrowser();
      activexContainer.setActiveX( browser );

      // Provide a home.
      browser.getIWebBrowser2().Navigate( home );


      // Show the frame.
      setSize( 600, 400 );

      setVisible( true );

    } catch (Exception ex) {

      ex.printStackTrace();

    }

  }

 

  public static void main( String[] args )

  {

    new WebFrame().showBrowser();

  }

}



分享到:
评论
2 楼 luzl 2009-03-16  
ray_linn 写道

这种东西挺无聊的,windows大部分软件都是COM,很容易在VBscript里进行调用,java这种方式十分十分的笨拙。

有道理,但是因为想用Java实现就这样了,VB我自己也不太会,呵呵!
1 楼 ray_linn 2009-03-15  
这种东西挺无聊的,windows大部分软件都是COM,很容易在VBscript里进行调用,java这种方式十分十分的笨拙。

相关推荐

    java调用IE浏览器

    在Java编程环境中,调用外部应用程序,如Internet Explorer(IE)浏览器,是一项常见的任务。这主要通过`java.lang.Runtime`类或`java.awt.Desktop`类来实现。下面将详细介绍如何使用Java调用IE浏览器,并支持其他...

    java调用wps,实现word转pdf,word转图片等

    本话题主要关注如何利用Java调用WPS(金山办公软件)来实现Word到PDF的转换以及Word到图片的转换。这些功能对于处理大量文档和报告的企业尤其有用,可以自动化工作流程,减少手动操作。 首先,让我们了解WPS。WPS ...

    java调用chrome浏览器内核cef实现,非jxbrowser

    总结起来,Java调用Chrome内核CEF实现非JxBrowser的方式需要开发者具备一定的C++和JNI知识,以及对CEF框架的理解。这个过程虽然相对复杂,但可以避免商业库的费用,同时获得与Chrome相同的Web渲染能力。在实际开发中...

    二、JAVA调用海康威视SDK实现摄像头预览完整版

    在本文中,我们将深入探讨如何使用JAVA调用海康威视(Hikvision)的SDK来实现摄像头的预览功能,并进行截图操作。海康威视作为全球知名的安防监控设备制造商,提供了丰富的SDK供开发者集成到自己的应用中,以便更好...

    DELPHI 7 调用 JAVA 接口

    本文将深入探讨如何在Delphi 7中调用Java接口,实现两者之间的数据传递和结果返回。 首先,理解Delphi 7调用Java接口的基础原理。这种通信通常依赖于Java的本地接口(JNI,Java Native Interface),它允许Java代码...

    java实现流量控制流量控制

    总结来说,Java实现流量控制涉及多方面,包括基本的Socket缓冲区设置、NIO的选择器和通道、自定义协议以及线程管理和第三方库的支持。开发者可以根据实际需求选择合适的方法来实现流量控制,确保网络通信的稳定性和...

    qt调用JAVA文件示例

    本文将详细讲解如何在QT项目中调用JAVA文件,以实现与Android原生系统的交互。 首先,我们需要了解QT的QAndroidJniObject类,它是QT为与Android Java层交互提供的一种工具。QAndroidJniObject允许我们在C++代码中...

    一、JAVA调用海康威视SDK实现摄像头预览

    本文将深入探讨如何使用JAVA调用海康威视SDK来实现摄像头的预览功能。海康威视作为全球领先的安防产品及解决方案提供商,提供了丰富的SDK供开发者进行二次开发,以满足各种定制化需求。 首先,我们需要了解海康威视...

    利用PowerBuilder实现对IE浏览器的调用与控制

    d_backward 的 Clicked 事件...以上就是如何利用 PowerBuilder 实现对 IE 浏览器调用与控制的详细步骤和相关知识点。通过这样的技术,开发者可以构建更加灵活且用户友好的应用程序,适应不断变化的用户需求和技术趋势。

    Java RPC调用示例

    Java RPC(Remote Procedure Call)调用是分布式系统中常见的通信方式,它允许一个程序在不关心远程系统具体实现的情况下调用另一个网络上的程序。在这个Java RPC调用示例中,我们将探讨RPC的基本概念、实现机制以及...

    java 调用 odi webservice

    Java 调用 ODI webservice 实现数据同步 Java 调用 ODI webservice 是实现数据同步的一种常见方式。ODI(Oracle Data Integrator)是一种数据集成平台,提供了webservice接口,允许用户通过webservice调用ODI方案...

    java调用大漠插件源码,绑定游戏柄口,进行后台操作

    总结来说,这个项目利用Java调用大漠插件,结合游戏柄接口,实现后台自动化操作。开发者需要了解Java的I/O、事件处理、多线程以及与USB设备交互的相关知识,同时熟悉大漠插件的API,才能有效地编写出这样的程序。...

    Java编程调用微信接口实现图文信息推送功能

    主要介绍了Java编程调用微信接口实现图文信息等推送功能,涉及java微信图文信息推送接口调用及相关文件、字符串编码转换相关操作技巧,需要的朋友可以参考下

    java调用datastage的底层实现

    要做datastage调度的,ds对c开放接口,这个是java写的可以用java调用dsjob的代码,里面实现了所有的方法,还有一个调用的例子。需要的朋友可以下载回去,我研究好长时间。。。里面还有用到的ds的文档可以自己在其他...

    Java通过JNA调用系统API

    JNA通过映射Java接口到本地库函数来实现这一功能,简化了Java与本地代码的交互。 2. **调用系统API**: 在Windows系统中,`Kernel32.dll`是核心系统库之一,包含了大量的系统级函数。我们可以通过JNA加载该库,并...

    JAVA调用C#写的DLL例子

    通过上面的例子,我们可以看到,使用 JAVA 调用 C# 编写的 DLL 文件可以实现 JAVA 和 C# 之间的交互,从而扩展了我们的编程能力。 在实际应用中,我们可以使用 JAVA 调用 C# 编写的 DLL 文件来实现各种功能,如加密...

    pb调用java(医保的java类和其它工具类)_20210923.rar

    SatJni是C++编写的动态链接库,实现了C#,PB,Delphi,VB,VC等对Java的调用,能让你很容易地调用成熟的java类库和第三方java组件。不用再为移值java代码而烦恼。 示例中演示了调用医保提供的java库(节省大量改造时间)...

    java通过dll 或者动态库调用讯飞sdk实现离线文字转语音

    java通过dll 或者动态库调用讯飞sdk实现离线文字转语音,讯飞离线文字转语音,java调用windows 或者linux动态库,通过jna的native方法实现,主要还要注意项目中路径的配置,先到讯飞控制台下载sdk,项目中涉及到的...

    java调用Gmssl国密接口实例

    java调用Gmssl中国密接口进行对称与非对称加解密等运算,动态so库进行接口jni方式调用,采取接口形式对外暴露,方便对接系统调用相关java接口进行相关运算操作。

    C#调用Java接口演示

    本示例主要探讨的是如何使用C#调用Java接口,实现不同编程语言之间的交互。C#和Java都是广泛应用的编程语言,它们各自拥有丰富的库和生态系统,但有时需要在两者之间建立桥梁,以利用各自的优点。本文将详细介绍这一...

Global site tag (gtag.js) - Google Analytics