关于Java内嵌浏览器的问题

geelpheels 2011-03-09 05:08:16
现在要做一个java应用程序。这个程序中要用到内嵌的浏览器,并且希望在用户点击浏览器中的页面元素时,java程序中能够获取到对应事件,并在从该事件中得到是网页上的(也就是DOM树上的)哪个元素。

请大家推荐哪些内嵌浏览器可以满足这样的需求?
并告知使用的难易程度,以及是否要收费等服务信息?
...全文
820 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
Man_Jiang 2012-08-17
  • 打赏
  • 举报
回复
到底怎么用啊!
plutowang 2011-06-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 xdw523570601 的回复:]
谷歌浏览器内嵌框架是一款免费插件,可在 Internet Explorer 中使用新式的 HTML5 网络应用程序
[/Quote]
这个貌似属于IE插件,只是让IE用一些谷歌浏览器的功能,根据介绍是这样我也没用过,可以说是是IE中嵌入谷歌.而楼主要做的是在应用程序中嵌入浏览器貌似不符合.

我正好也在做类似功能,找了很多这方面的资料javachromiumembedded 这个很好是直接把谷歌浏览器与应用程序绑定,而不是调用系统本地浏览器,也就是说你系统中没任何浏览器绑定后也能通过这个应用程序浏览网页
目前只支持 微软的windows,以及苹果OS.悲剧的事我要做的是Linux ,搞了几天白整了..
不过希望能帮到楼主,另外,如果过楼主找到了支持Linux下内嵌浏览器的资料麻烦告诉我十分感谢..
以下是相关链接
http://code.google.com/p/javachromiumembedded/

http://code.google.com/p/chromiumembedded/



geelpheels 2011-03-31
  • 打赏
  • 举报
回复
感谢舒逸飞彻底帮我解决了问题。
geelpheels 2011-03-16
  • 打赏
  • 举报
回复
谁能告知jexlorer或jxbrowser的破解方法或者license?
geelpheels 2011-03-16
  • 打赏
  • 举报
回复
根据我的研究,在java层捕获类似事件各个软件包都没有实现。如果真的要这么做的话,就需要在像webkit这样的浏览器开源实现中进行修,加入对应功能的java本地方法和接口。这已经超出本论坛子栏目的范围。本贴权当散分。
andyniuandyniu 2011-03-15
  • 打赏
  • 举报
回复
顶啦。赶紧给分吧。。
geelpheels 2011-03-15
  • 打赏
  • 举报
回复
简单地说就是要支持浏览器中的屏幕捕捉事件。
huntor 2011-03-15
  • 打赏
  • 举报
回复
有个收费的 JxBrowser
New Features
* DOM events support for IE, Mozilla and Safari
geelpheels 2011-03-15
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 xxyyzz1121 的回复:]
http://zhidao.baidu.com/question/3119548.html
[/Quote]

你这是什么链接啊?
geelpheels 2011-03-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 geelpheels 的回复:]
是在java应用中内嵌浏览器。并且希望在用户点击浏览器中的页面元素时,java程序中能够获取到对应事件,并在从该事件中得到是网页上的(也就是DOM树上的)哪个元素。

知道的大侠多推荐一些符合条件的软件。顺便给个链接吧。
[/Quote]

是在java应用中内嵌浏览器。并且希望在用户点击浏览器中的页面元素时,java程序中能够获取到对应事件,并在从该事件中得到是网页上的(也就是DOM树上的)哪个元素。

方法一和方法二能做到吗?
mohaiyong 2011-03-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 xdw523570601 的回复:]
谷歌浏览器内嵌框架是一款免费插件,可在 Internet Explorer 中使用新式的 HTML5 网络应用程序
[/Quote]




同意~~
Ganymede 2011-03-12
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 woshigaoshou980 的回复:]

方法一、


基于eclipse swt做java浏览器内嵌等功能
swt-3.5M4-win32-win32-x86.zip 包下载地址: http://download.csdn.net/source/921856

Java code

import java.util.ArrayList;

import org.eclipse.swt.SWT;
import……
[/Quote]
你真好!最近正用SWT做毕业设计,你这个没准用上了谢谢你!!
i李小武 2011-03-12
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 woshigaoshou980 的回复:]

方法一、


基于eclipse swt做java浏览器内嵌等功能
swt-3.5M4-win32-win32-x86.zip 包下载地址: http://download.csdn.net/source/921856

Java code
import java.util.ArrayList;

import org.eclipse.swt.SWT;
import……
[/Quote]
顶!
pywepe 2011-03-11
  • 打赏
  • 举报
回复
不太懂lz的意图.
geelpheels 2011-03-11
  • 打赏
  • 举报
回复
那方法二能禁止弹出窗吗?
  • 打赏
  • 举报
回复
方法一 好用一点,方法二有弹窗就停止运行了。 建议用方法一
geelpheels 2011-03-10
  • 打赏
  • 举报
回复
是在java应用中内嵌浏览器。并且希望在用户点击浏览器中的页面元素时,java程序中能够获取到对应事件,并在从该事件中得到是网页上的(也就是DOM树上的)哪个元素。

知道的大侠多推荐一些符合条件的软件。顺便给个链接吧。
  • 打赏
  • 举报
回复
方法二、




import org.eclipse.swt.SWT;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.browser.CloseWindowListener;
import org.eclipse.swt.browser.LocationEvent;
import org.eclipse.swt.browser.LocationListener;
import org.eclipse.swt.browser.OpenWindowListener;
import org.eclipse.swt.browser.ProgressEvent;
import org.eclipse.swt.browser.ProgressListener;
import org.eclipse.swt.browser.StatusTextEvent;
import org.eclipse.swt.browser.StatusTextListener;
import org.eclipse.swt.browser.WindowEvent;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.FormAttachment;
import org.eclipse.swt.layout.FormData;
import org.eclipse.swt.layout.FormLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;

/**
* This class implements a web browser
*/
public class TestBrowser {
// The "at rest" text of the throbber

private Label throbber;

private Button button;

private Combo url;

private Button button_4;

private Button button_3;

private Browser browser;

private Browser browser2;

private Label status;

private Button button_2;

private Button button_1;

private static final String AT_REST = "Ready";

private String[] urlList = new String[256];

int urlListItemCount = 0;

/**
* Runs the application
*
* @param location
* the initial location to display
*/
public void run(String location) {
Display display = new Display();
Shell shell = new Shell(display);
shell.setText("Advanced Browser");
createContents(shell, location);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}

/**
* Creates the main window's contents
*
* @param shell
* the main window
* @param location
* the initial location
*/
public void createContents(Shell shell, String location) {
shell.setLayout(new FormLayout());

// Create the composite to hold the buttons and text field

Composite controls = new Composite(shell, SWT.NONE);
FormData data = new FormData();
data.top = new FormAttachment(0, 0);
data.left = new FormAttachment(0, 0);
data.right = new FormAttachment(100, 0);
controls.setLayoutData(data);

// Create the status bar

status = new Label(shell, SWT.NONE);
data = new FormData();
data.left = new FormAttachment(0, 0);
data.right = new FormAttachment(100, 0);
data.bottom = new FormAttachment(100, 0);
status.setLayoutData(data);

// Create the web browser

browser = new Browser(shell, SWT.BORDER);
browser.addOpenWindowListener(new OpenWindowListener() {
public void open(WindowEvent arg0) {
String urlStr = arg0.browser.getUrl();
int flag = 1;
browser.setVisible(false);
browser2.setVisible(true);
arg0.browser = browser2;
for (int i = 0; i < urlListItemCount; i++) {
if (urlList[i].equals(urlStr)) {
flag = 0;
}
}
if (flag == 1) {
urlList[urlListItemCount] = urlStr;
url.add(urlStr);
url.setText(urlStr);
urlListItemCount++;
}
.
.
.
.
.
....................剩下代码在
http://blogold.chinaunix.net/u/29346/showart_317457.html



  • 打赏
  • 举报
回复
方法一代码还没写完, 其余部分代码在

http://wangzi6hao.javaeye.com/blog/531550
  • 打赏
  • 举报
回复
方法一、


基于eclipse swt做java浏览器内嵌等功能
swt-3.5M4-win32-win32-x86.zip 包下载地址: http://download.csdn.net/source/921856

import java.util.ArrayList;  

import org.eclipse.swt.SWT;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.browser.OpenWindowListener;
import org.eclipse.swt.browser.VisibilityWindowListener;
import org.eclipse.swt.browser.WindowEvent;
import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.events.DisposeListener;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;

public class BrowserTest1 {
static final ArrayList urls = new ArrayList(); // @jve:decl-index=0:
static boolean canRemove = false;
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
shell.setText("jog36行业招聘");
Image image = new Image(shell.getDisplay(), "Favicon.ico");
shell.setImage(image);
shell.setLayout(new FillLayout());
Browser browser = new Browser(shell, SWT.NONE);
initialize(display, browser);
shell.open();
browser.setUrl("www.job36.com");
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}

static void initialize(final Display display, Browser browser) {
browser.addListener(SWT.MouseDown, new Listener() {
public void handleEvent(Event event) {
System.out.println("event.time:" + event.time);
}
});
browser.addOpenWindowListener(new OpenWindowListener() {
public void open(WindowEvent event) {
// Embed the new window
final Shell shell = new Shell(display);
shell.setText("New Window");
shell.setLayout(new FillLayout());
final Browser browser = new Browser(shell, SWT.NONE);
initialize(display, browser);
event.browser = browser;
event.display.asyncExec(new Runnable() {
public void run() {
String url = browser.getUrl();
System.out.println(url);
System.out.println(browser.getText());
if (urls.contains(url)){
//flag to chek if the window is closed automatic
canRemove = false;
shell.close();
}
else{
canRemove = true;
urls.add(url);
}

}
});
}
});
browser.addVisibilityWindowListener(new VisibilityWindowListener() {
public void hide(WindowEvent event) {
Browser browser = (Browser) event.widget;
Shell shell = browser.getShell();
shell.setVisible(false);
}

public void show(WindowEvent event) {
Browser browser = (Browser) event.widget;
Shell shell = browser.getShell();
if (event.location != null)
shell.setLocation(event.location);
if (event.size != null) {
Point size = event.size;
shell.setSize(shell.computeSize(size.x, size.y));
}
if (event.addressBar || event.menuBar || event.statusBar
|| event.toolBar) {
// Create widgets for the address bar, menu bar, status bar and/or tool bar
// leave enough space in the Shell to accomodate a Browser of the size
// given by event.size
}
shell.open();
}
});
browser.addDisposeListener(new DisposeListener(){
public void widgetDisposed(DisposeEvent event){
Browser browser = (Browser) event.widget;
if (canRemove)
urls.remove(browser.getUrl());
Shell shell = browser.getShell();
// shell.close();
}
});
}

}







加载更多回复(2)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧