DJNativeSwing
它是native code实现的,但是集成在java swing代码中也没有任何问题。网址是:Native Swing
不只是浏览器,还有vlc,flash等等,包括例子官方也很丰富。
当然默认只有win32的,不过也不要灰心,DJNativeSwing是基于swt,所以只要下载对应操作系统的swt.jar就可以了。
我的是linux 64bit 下载对应的swt.jar。一样可以运行,对于swt.jar. google一下就可以找到。
希望对你们有所帮助。
附上官网代码
[java] view plain copy
- /*
- * 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();
- }
- }