前两天有一个挺奇怪的应用需求:在SWING程序中内嵌浏览器,并与页面进行内容的交互,同时,浏览器打开的是已有系统,不提供任何接口。
在网上搜索了一下思路,发现了一个开源项目--DJproject,这个开源项目,在SWING中内嵌了浏览器,可以在浏览器中执行简单的JavaScript代码,同时还有播放Flash等其他功能。
内嵌浏览器源代码
/*
* Christopher Deckers (chrriis@nextencia.net)
* http://www.nextencia.net
*
* See the file "readme.txt" for information on usage and redistribution of
* this file, and for a DISCLAIMER OF ALL WARRANTIES.
*/
package chrriis.dj.nativeswing.swtimpl.demo.examples.webbrowser;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.BorderFactory;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import chrriis.common.UIUtils;
import chrriis.dj.nativeswing.swtimpl.NativeInterface;
import chrriis.dj.nativeswing.swtimpl.components.JWebBrowser;
/**
* @author Christopher Deckers
*/
public class SimpleWebBrowserExample extends JPanel {
public SimpleWebBrowserExample() {
super(new BorderLayout());
JPanel webBrowserPanel = new JPanel(new BorderLayout());
webBrowserPanel.setBorder(BorderFactory.createTitledBorder("Native Web Browser component"));
final JWebBrowser webBrowser = new JWebBrowser();
webBrowser.navigate("http://www.google.com");
webBrowserPanel.add(webBrowser, BorderLayout.CENTER);
add(webBrowserPanel, BorderLayout.CENTER);
// Create an additional bar allowing to show/hide the menu bar of the web browser.
JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.CENTER, 4, 4));
JCheckBox menuBarCheckBox = new JCheckBox("Menu Bar", webBrowser.isMenuBarVisible());
menuBarCheckBox.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
webBrowser.setMenuBarVisible(e.getStateChange() == ItemEvent.SELECTED);
}
});
buttonPanel.add(menuBarCheckBox);
add(buttonPanel, BorderLayout.SOUTH);
}
/* Standard main method to try that test as a standalone application. */
public static void main(String[] args) {
UIUtils.setPreferredLookAndFeel();
NativeInterface.open();
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame frame = new JFrame("DJ Native Swing Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new SimpleWebBrowserExample(), BorderLayout.CENTER);
frame.setSize(800, 600);
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
});
NativeInterface.runEventPump();
}
}
截图如下
播放Flash源代码:
/*
* Christopher Deckers (chrriis@nextencia.net)
* http://www.nextencia.net
*
* See the file "readme.txt" for information on usage and redistribution of
* this file, and for a DISCLAIMER OF ALL WARRANTIES.
*/
package chrriis.dj.nativeswing.swtimpl.demo.examples.flashplayer;
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import chrriis.common.UIUtils;
import chrriis.dj.nativeswing.swtimpl.NativeInterface;
import chrriis.dj.nativeswing.swtimpl.components.JFlashPlayer;
/**
* @author Christopher Deckers
*/
public class SimpleFlashExample extends JPanel {
public SimpleFlashExample() {
super(new BorderLayout());
JFlashPlayer flashPlayer = new JFlashPlayer();
flashPlayer.load(getClass(), "resource/Movement-pointer_or_click.swf");
add(flashPlayer, BorderLayout.CENTER);
}
/* Standard main method to try that test as a standalone application. */
public static void main(String[] args) {
UIUtils.setPreferredLookAndFeel();
NativeInterface.open();
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame frame = new JFrame("DJ Native Swing Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new SimpleFlashExample(), BorderLayout.CENTER);
frame.setSize(800, 600);
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
});
NativeInterface.runEventPump();
}
}
截图如下
感觉这个项目做得还是挺新颖的,但是,当内嵌浏览器,并与页面进行交互时,做得还是不好。比如API中执行JavaScript代码为 webBrowser.executeJavascript(),此方法还是只能执行简单的JS语句,稍微复杂一点的JS函数,是执行不了的。同时,获取和设置页面内容的代码为 webBrowser.getHtmlContent(),webBrowser.setHtmlContent(),这两个方法在实际使用时,比如打开sina主页,调用getHtmlContent()方法,取到的内容为空,达不到在浏览器右键查看页面源文件的效果。所以最终这个项目还是没能帮助我实现需求。
- 描述: 内置浏览器截图
- 大小: 99.2 KB
- 大小: 98.2 KB
分享到:
相关推荐
使用swing内嵌浏览器需要导入3个jar包,第3个根据电脑版本选择,dj-native-swing-swt.jar dj-native-swing.jar org.eclipse.swt.win32.win32.x86_64-4.3.jar
做java客户端时,为了显示更好的显示效果,可以用内嵌浏览器,此包里有相关例子和jar包,api等!
用DJnative-swt和swt包开发的调用本地浏览器和webkit浏览器的示例
DJ Native Swing 是一个跨平台的浏览器、Flash播放器、HTML编辑器和多媒体播放器组件。
主要介绍了SpringBoot启动后启动内嵌浏览器的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
跨平台使用swing调用浏览器,由于现在很多的机器的jre或者jdk都是1.5版本及以下的不能使用jdk 1.6 desktop类。
最新Java swing实现简单的浏览器源码免费分享粹,,
java浏览器+swing嵌套网页+源码免费 我的博客:http://blog.csdn.net/yjflinchong
swing 浏览器
基于JavaSwing的浏览器插件,基于SWT和本地浏览器的实现。这个是Demo效果。
NULL 博文链接:https://gxblluojialin.iteye.com/blog/2028156
Java-Swing嵌入浏览器-附件资源
Java自制浏览器,支持Flash,各个版本的ui框架都有,具备所有IE内核具备的功能,拓展功能比如F5,比如前进后退,比如查看源代码,键盘监听和鼠标右键菜单可自行扩展。里面包含javafx的,swing的,swt三个版本的java...
提示两个windows系统下的xulrunner,分别对应32位系统和64位系统。需要的朋友们请自行选择
这是是我自己做的Java图片浏览器,可以保存浏览的历史,可以选择上一张图片和下一张图片,大小只有几百K,可以供学习Swing使用
在SWING中嵌套使用JScrollPane时,会出现诸多显示问题,如内层JScrollPane的滚动条显示不正常、框架缩放时,内层JScrollPane放大后无法自适应缩小等。如果需要显示内层的滚动条,则需要外层Scroll组件的view视图组件...
Java Swing实现仿Chrome浏览器跳跳龙小游戏 Java Swing实现仿Chrome浏览器跳跳龙小游戏 Java Swing实现仿Chrome浏览器跳跳龙小游戏 Java Swing实现仿Chrome浏览器跳跳龙小游戏 Java Swing实现仿Chrome浏览器跳跳龙小...