`

Java内嵌浏览器

    博客分类:
  • Java
 
阅读更多
等待放假,闲来无事,做个内嵌浏览器的Java桌面应用,用到了dj-nativeswing
是个半成品,只是能显示页面,没有写注释,大家凑合看看吧

多年不发帖,忘记怎么上传附件了

使用的jar包:
dj-nativeswing-swt-core.jar
dj-nativeswing-swt.jar
dj-nativeswing.jar
jna-4.0.0.jar
jna_WindowUtils.jar
MozillaInterfaces-1.8.1.3.jar
org.eclipse.swt.win32.win32.x86_64-4.3.jar

由于开发环境是64位的,但是mvnrepository上只有32位的jar,所以下载了dj-nativeswing的源码,自己编译的

package com.browser;

import chrriis.common.UIUtils;
import chrriis.dj.nativeswing.swtimpl.NativeInterface;
import com.browser.components.MainWndFrame;

import javax.swing.*;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Properties;

public class Assistant {

    public static void main(String[] args) {
        String u = "http://www.baidu.com/";
        String t = "test";

        String propFile = System.getProperty("user.dir") + File.separator + "assistant.properties";
        try (
                InputStream in = new BufferedInputStream(new FileInputStream(propFile))
        ) {
            Properties p = new Properties();
            p.load(in);

            u = p.getProperty("assistant.url", u);
            t = p.getProperty("assistant.title", t);

        } catch (Exception e) {
            e.printStackTrace();
            System.exit(0);
        }

        UIUtils.setPreferredLookAndFeel();
        NativeInterface.open();

        String title = t;
        String url = u;

        SwingUtilities.invokeLater(() -> {
            try {
                new MainWndFrame(title, url);
            } catch (Exception e) {
                e.printStackTrace();
            }
        });

        NativeInterface.runEventPump();
    }

}


package com.browser.components;

import javax.swing.*;
import java.awt.*;

public class MainWndFrame extends JFrame {

    private MainWndFrame() {
    }

    public MainWndFrame(String title, String url) {

        setTitle(title);

        Container c = getContentPane();
        c.setLayout(new GridLayout(1, 2));
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        pack();
        setVisible(true);
        setSize(1200, 900);
        setLocationRelativeTo(getOwner());

        BrowserPanel browserPanel = new BrowserPanel();
        browserPanel.load(url);
        c.add(browserPanel, 0);

        SettingPanel settingPanel = new SettingPanel(browserPanel);
        c.add(settingPanel, 1);

    }

}


package com.browser.components;

import chrriis.dj.nativeswing.swtimpl.components.JWebBrowser;

import javax.swing.*;
import java.awt.*;

public class BrowserPanel extends JPanel {

    private JWebBrowser webBrowser;

    public BrowserPanel() {
        super(new BorderLayout());

        webBrowser = new JWebBrowser();
        webBrowser.setButtonBarVisible(false);
        webBrowser.setMenuBarVisible(false);
        webBrowser.setBarsVisible(false);
        webBrowser.setStatusBarVisible(false);
        add(webBrowser, BorderLayout.CENTER);
    }

    public void load(String url) {
        webBrowser.navigate(url);
    }

    public JWebBrowser getWebBrowser() {
        return webBrowser;
    }

}


package com.browser.components;

import chrriis.dj.nativeswing.swtimpl.components.JWebBrowser;

import javax.swing.*;
import java.awt.*;

public class SettingPanel extends JPanel {

    private JWebBrowser webBrowser;

    private JTextArea browserInfo;

    private SettingPanel() {
    }

    public SettingPanel(BrowserPanel browserPanel) {
        super(new GridLayout(2, 1));
        setSize(300, 500);

        this.webBrowser = browserPanel.getWebBrowser();

        Button enter = new Button();
        enter.setLabel("Press Me!");
        enter.addActionListener(e -> analysisBrowser());
        add(enter, 0);

        browserInfo = new JTextArea();
        browserInfo.setLineWrap(true);

        JScrollPane scroll = new JScrollPane(browserInfo);
        scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
        scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);

        add(scroll, 1);
    }

    private void analysisBrowser() {
        StringBuilder sb = new StringBuilder();
        sb.append(webBrowser.getBrowserType()).append("\n");
        sb.append(webBrowser.getHTMLContent());

        browserInfo.setText(sb.toString());
    }

}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics