火狐浏览器中打开java_将Firefox浏览器嵌入Java Swing中

小编典典

这是一些示例代码

import java.awt.Color;

import java.awt.Component;

import java.awt.Container;

import java.awt.FlowLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.io.FileNotFoundException;

import java.io.File;

import javax.swing.*;

import org.mozilla.xpcom.*;

import org.mozilla.interfaces.*;

/*

Websites ref

http://groups.google.com/group/mozilla.dev.tech.java/browse_thread/thread/898ba6751d0c57f7

http://skrul.com/blog/code/

http://wirestorm.net/blog/?cat=9

*/

public class BrowserTest implements nsIWebProgressListener,nsIWeakReference, nsIInterfaceRequestor, nsIWebBrowserChrome, nsISHistoryListener{

static {

try {

System.loadLibrary("NativeWindow");

} catch (UnsatisfiedLinkError e) {

System.err.println("can't find your library");

}

}

private static final String frameTitle="GRE Embedded";

public static void main(String[] args) {

BrowserConroller controler=new BrowserConroller();

controler.run();

new BrowserTest().start();

}

public void start(){

JFrame f = new JFrame( frameTitle );

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

f.setSize(400, 150);

Container content = f.getContentPane();

content.setBackground(Color.white);

content.setLayout(new FlowLayout());

content.add(new JLabel("Initializing ... "));

f.setVisible(true);

File grePath = null;

LocationProvider locProvider;

Mozilla mozilla = Mozilla.getInstance();

GREVersionRange[] range = new GREVersionRange[1];

range[0] = new GREVersionRange("1.8.0", true, "1.9", false);

try {

grePath = Mozilla.getGREPathWithProperties(range, null);

mozilla.initialize(grePath);

locProvider = new LocationProvider(grePath);

mozilla.initEmbedding(grePath, grePath, locProvider);

}

catch (FileNotFoundException e) {

System.out.println("Error: FileNotFoundException");

}

catch (XPCOMException e) {

System.out.println("Error: XPCOMException");

}

//---------- END GRE INITIALIZATION------------

nsIServiceManager serviceManager = mozilla.getServiceManager();

nsIAppStartup appStartup = (nsIAppStartup)serviceManager.getServiceByContractID("@mozilla.org/toolkit/app-startup;1", nsIAppStartup.NS_IAPPSTARTUP_IID);

nsIWindowCreator windowCreator = (nsIWindowCreator)appStartup.queryInterface(nsIWindowCreator.NS_IWINDOWCREATOR_IID);

nsIWindowWatcher windowWatcher =(nsIWindowWatcher)serviceManager.getServiceByContractID("@mozilla.org/embedcomp/window-watcher;1",nsIWindowWatcher.NS_IWINDOWWATCHER_IID);

windowWatcher.setWindowCreator(windowCreator);

nsIDOMWindow win = windowWatcher.openWindow(null, "http://google.com", "MAIN_WIN","chrome,resizable,centerscreen", null);

windowWatcher.setActiveWindow( win );

nsIComponentManager componentManager = mozilla.getComponentManager();

String NS_IWEBBROWSER_CID = "F1EAC761-87E9-11d3-AF80-00A024FFC08C"; //$NON-NLS-1$

nsIWebBrowser webBrowser = (nsIWebBrowser) componentManager.createInstance(NS_IWEBBROWSER_CID, null, nsIWebBrowser.NS_IWEBBROWSER_IID);

webBrowser.setContainerWindow(this);

webBrowser.addWebBrowserListener(this, nsIWebProgressListener.NS_IWEBPROGRESSLISTENER_IID);

// nsIWebNavigation webNavigation=(nsIWebNavigation)webBrowser.queryInterface(nsIWebNavigation.NS_IWEBNAVIGATION_IID);

// webNavigation.loadURI("http://www.zdnet.com", nsIWebNavigation.LOAD_FLAGS_NONE, null, null, null);

//

nsIBaseWindow baseWindow = (nsIBaseWindow) webBrowser.queryInterface(nsIBaseWindow.NS_IBASEWINDOW_IID);

long handle=FindWindow.getHWND( frameTitle );

baseWindow.initWindow(handle, 0, 0, 0,350,350);

baseWindow.create();

baseWindow.setVisibility(true);

//

// nsIDOMWindow domWin=webBrowser.getContentDOMWindow();

// nsIDOMEventTarget domEventTarget= (nsIDOMEventTarget)domWin.queryInterface(nsIDOMEventTarget.NS_IDOMEVENTTARGET_IID);

// domEventTarget.addEventListener("click", new EventListener(), false);

//

//Hide JFrame after it have been initialized

f.setVisible(true);

//

// nsIWebNavigation webNavigation=(nsIWebNavigation)webBrowser.queryInterface(nsIWebNavigation.NS_IWEBNAVIGATION_IID);

// webNavigation.loadURI("http://www.zdnet.com", nsIWebNavigation.LOAD_FLAGS_NONE, null, null, null);

//

appStartup.run();

System.out.println("try termEmbedding");

try {

System.out.println("mozilla.termEmbedding(); START");

mozilla.termEmbedding();

System.out.println("mozilla.termEmbedding(); FINISHED");

}

catch (XPCOMException e) {

System.out.println("Fehler: XPCOMException");

}

System.out.println("finished termEmbedding");

System.out.println("All done");

}

public void onLocationChange(nsIWebProgress webProgress, nsIRequest request, nsIURI location) {

c("onLocationChange");

}

public void onProgressChange(nsIWebProgress webProgress, nsIRequest request, int curSelfProgress, int maxSelfProgress, int curTotalProgress, int maxTotalProgress) {

c("onProgressChange");

}

public void onSecurityChange(nsIWebProgress webProgress, nsIRequest request, long state) {

c("onSecurityChange");

}

public void onStateChange(nsIWebProgress webProgress, nsIRequest request, long stateFlags, long status) {

c("onStateChange");

}

public void onStatusChange(nsIWebProgress webProgress, nsIRequest request, long status, String message) {

c("onStatusChange");

}

public nsISupports queryInterface(String uuid) {

c("queryInterface");

return null;

}

public nsISupports queryReferent(String uuid) {

c("queryReferent");

return null;

}

public nsISupports getInterface(String uuid) {

c("getInterface");

return null;

}

private void c(Object o){

System.out.println(o);

}

public void destroyBrowserWindow() {

c("destroyBrowserWindow");

}

public void exitModalEventLoop(long status) {

c("exitModalEventLoop");

}

public long getChromeFlags() {

c("getChromeFlags");

return 0;

}

public nsIWebBrowser getWebBrowser() {

c("getWebBrowser");

return null;

}

public boolean isWindowModal() {

c("isWindowModal");

return false;

}

public void setChromeFlags(long chromeFlags) {

c("setChromeFlags");

}

public void setStatus(long statusType, String status) {

c("setStatus");

}

public void setWebBrowser(nsIWebBrowser webBrowser) {

c("setWebBrowser");

}

public void showAsModal() {

c("showAsModal");

}

public void sizeBrowserTo(int acx, int acy) {

c("sizeBrowserTo");

}

public boolean onHistoryGoBack(nsIURI backURI) {

c("onHistoryGoBack");

return false;

}

public boolean onHistoryGoForward(nsIURI forwardURI) {

c("onHistoryGoForward");

return false;

}

public boolean onHistoryGotoIndex(int index, nsIURI gotoURI) {

c(" onHistoryGotoIndex");

return false;

}

public void onHistoryNewEntry(nsIURI newURI) {

c(" onHistoryNewEntry");

}

public boolean onHistoryPurge(int numEntries) {

c(" onHistoryPurge");

return false;

}

public boolean onHistoryReload(nsIURI reloadURI, long reloadFlags) {

c(" onHistoryReload");

return false;

}

} //public class JavaXPCOM_test1[/code]

2020-10-18

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/460212.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实验 使用 vivado zedboard GPIO 开关 开控制 LED

前面我做了几个实验 都没有用过 开关,这一次用一用 发现 vivado 真的挺方便 所以 使用 vivado 开发 1.建工程 我使用 vivado 2013.4 创建新工程 –》 next –》next 勾选 Do not specify sources at this time //这样跳过后面两个添加文件页面 选择 board –》 ze…

java 最优化_java-多维度求最优解

拿出11条数据//条件每个位置(position)的人数限制每队(team)人数不能超过7人credits的总和在100分之内(包含100)总分(points)最高//位置人数限制position-1 : 1 position-2 : 3-5 position-3 : 1-3 position-4 : 3-5//模拟数据{points credits position team56 9.0 1 t154 9.1 …

polymer web componets 大前端

大前端 东南水乡 一叶小舟拂过水面 船上两位大侠把酒言欢 一位是玉真人 另一位是张真人 两人喝到开心处 变作对联起来 上联 前端研究,研究个屁~ 下联 前端设计,设计个屁~ 横批 前端sb特色 polymer 提供创建自定义和标准dom元素类似的自定义元素功能 可以…

citespace安装如何配置JAVA_citespace超详细安装教程

想用citespace写篇量化的文献综述但是试了很多次一直运行不了,无奈因为要分析的论文太多,只能继续学着下载……在踩了很多坑之后终于搞定了!!我参考了知乎大神们写的学习指南,但在下载过程中还是会遇到一点点小问题&am…

Ubuntu下安装配置JDK

第一步:下载jdk-7-linux-i586.tar.gz wget -c http://download.oracle.com/otn-pub/java/jdk/7/jdk-7-linux-i586.tar.gz 若失败,则自行下载即可。 第二步:解压安装 sudo tar zxvf ./jdk-7-linux-i586.tar.gz -C /usr/lib/jvm cd /usr/lib/…

必应(Bing)每日图片获取API

必应(Bing)每日图片获取API January 11, 2015 API http://lab.dobyi.com/api/bing.php 介绍 ValueDescriptiontitle标题desc描述url图片地址你们自由发挥……

java取模多位数_JAVA大数类—基础操作(加减乘除、取模、四舍五入、设置保留位数)...

当基础数据类型长度无法满足需求时可以使用大数类构造方法接受字符串为参数1 BigInteger bInt new BigInteger("123123");2 BigDecimal bDouble new BigDecimal("123123.123123124");基础操作(取模使用divideAndRemainder方法,返回的数组第二…

HDU 4902

数据太弱&#xff0c;直接让我小暴力一下就过了&#xff0c;一开始没注意到时间是15000MS&#xff0c;队友发现真是太给力了 #include <cstdio> #include <cstring> int n,q,a[100005],x[100005],p,l[100005],r[100005],t[100005]; int tree[1000005]; void build(…

tcp/udp高并发和高吐吞性能测试工具

在编写一个网络服务的时候都比较关心这个服务能达到多少并发连接,而在这连接的基础上又能达到一个怎样的交互能力.编写服务已经是一件很花力气的事情,而还要去编写一个能够体现结果的测试工具就更加消耗工作时间.下面介绍一个测试工具只需要简单地设置一下就能对tcp/udp服务进行…

java socket 对方关闭_java Socket判断对方是否已关闭连接

如何判断远端socket是否已经断开连接&#xff0c;如果断开那么需要重新连接。1通过socket类的方法isClosed()、isConnected()、isInputStreamShutdown()、isOutputStreamShutdown()等&#xff0c;这些方法都是本地端的状态&#xff0c;无法判断远端是否已经断开连接。2通过Outp…

几个数字的和

ctrl z 的使用 #include<iostream> using namespace std;main() {int num,sum0;while(cin>>num) {sumnum;}cout<<"和为"<<sum<<endl; } View Code#include<iostream> using namespace std; main() { int num,s…

sharepoint 2013基于AD的Form表单登录(三)——选择用户时,屏蔽掉AD。

//来源&#xff1a;http://www.cnblogs.com/lrforever/p/3695820.html 隐藏AD人员选择&#xff0c;$ad.IsVisible设置为true&#xff0c;则显示出AD里用户$cpm Get-SPClaimProviderManager $ad get-spclaimprovider -identity "AD" $ad.IsVisible $false $cpm.Up…

java synchronized boolean_java中synchronized关键字

代码示例&#xff1a;package com.test;/** x,y值为什么不能保持相同&#xff1b;**/public class Pair implements Runnable{boolean b false;private int x;private int y;public Pair(int x,int y){this.x x;this.y y;}public Pair(){}public void incrementX(){x;}publi…

网站在线压力测试工具Load Impact

关于Load ImpactLoad Impact是一个一个在线的网站压力测试服务及工具&#xff0c;模拟多用户同时访问你的站点&#xff0c;并出具报告以分析你的站点可以支撑的访问者数量&#xff0c;它能让你通过简单的几次点击就能测试出你的网站的性能。不过免费用户只能同时并发50个虚拟访…

Loading 遮蔽层 简单实现。

<!--背景div--><div id"bg" class"bg" style"display:none;text-align: center;"></div> <!--loading 图片 div --><div class"mydiv" id"popDiv"><img src"${root }/common/images/…

java服务器向客户端发消息_java一个简单的客户端向服务端发送消息

java一个简单的客户端向服务端发送消息客户端代码&#xff1a;package com.chenghu.tcpip;import java.io.IOException;import java.io.OutputStream;import java.net.InetAddress;import java.net.Socket;//客户端public class TcpClientDemo01 {public static void main(Stri…

sc.next在java什么意思_sc.next() 和 nextLine 的原理

对java的Scanner类的next开头的相关类有点纠结&#xff0c;看了一些博客大致懂了&#xff0c;整理下代码事例直接参考了这位大佬的https://blog.csdn.net/long71751380/article/details/94008351. 总的原理以一段代码为例,scanner类import java.util.Scanner;public class Next…

WPF RichTextBox相关总结

由于公司涉及到聊天对话框的功能&#xff0c;就想到了RichTextBox&#xff0c;查阅相关资料&#xff0c;总结下&#xff1a; 一、RichTextBox的内容相关的类 1.1RichTextBox的内容结构 RichTexBox是个可编辑控件&#xff0c;可编辑我们很容易想到word的可编辑&#xff0c;在wor…

【Construct Binary Tree from Inorder and Postorder Traversal】cpp

题目&#xff1a; Given inorder and postorder traversal of a tree, construct the binary tree. Note:You may assume that duplicates do not exist in the tree. 代码&#xff1a; /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNo…

Remove Duplicates from Sorted Array II leetcode java

题目&#xff1a;Follow up for "Remove Duplicates": What if duplicates are allowed at most twice? For example, Given sorted array A [1,1,1,2,2,3], Your function should return length 5, and A is now [1,1,2,2,3]. 题解&#xff1a;之前是不允许有重…