From 7c027d6fdeb5ebd1260380054b2ede18e8f0a1bc Mon Sep 17 00:00:00 2001 From: wangbing Date: Thu, 16 May 2024 00:21:06 +0800 Subject: [PATCH] init --- .../com/example/jxbrowser/JxBrowserDemo.java | 1 - .../com/example/jxbrowser/TabFactory.java | 2 +- .../java/com/example/jxbrowser/WebClient.java | 146 ++++++++++++++++++ 3 files changed, 147 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/example/jxbrowser/WebClient.java diff --git a/src/main/java/com/example/jxbrowser/JxBrowserDemo.java b/src/main/java/com/example/jxbrowser/JxBrowserDemo.java index 51eabdd..e73a94a 100644 --- a/src/main/java/com/example/jxbrowser/JxBrowserDemo.java +++ b/src/main/java/com/example/jxbrowser/JxBrowserDemo.java @@ -82,7 +82,6 @@ public class JxBrowserDemo { frame.add(tabbedPane, BorderLayout.CENTER); frame.setSize(1024, 700); frame.setLocationRelativeTo(null); -// frame.setIconImage(Resources.getIcon("jxbrowser16x16.png").getImage()); frame.setVisible(true); } diff --git a/src/main/java/com/example/jxbrowser/TabFactory.java b/src/main/java/com/example/jxbrowser/TabFactory.java index cf7ea9e..43f6cd0 100644 --- a/src/main/java/com/example/jxbrowser/TabFactory.java +++ b/src/main/java/com/example/jxbrowser/TabFactory.java @@ -21,7 +21,7 @@ import java.beans.PropertyChangeListener; public final class TabFactory { public static Tab createFirstTab() { - return createTab("https://www.teamdev.com/jxbrowser"); + return createTab("http://192.168.88.103"); } public static Tab createTab() { diff --git a/src/main/java/com/example/jxbrowser/WebClient.java b/src/main/java/com/example/jxbrowser/WebClient.java new file mode 100644 index 0000000..ae36683 --- /dev/null +++ b/src/main/java/com/example/jxbrowser/WebClient.java @@ -0,0 +1,146 @@ +package com.example.jxbrowser; + +import com.teamdev.jxbrowser.chromium.Browser; +import com.teamdev.jxbrowser.chromium.ba; +import com.teamdev.jxbrowser.chromium.swing.BrowserView; +import com.teamdev.jxbrowser.chromium.swing.DefaultDialogHandler; +import com.teamdev.jxbrowser.chromium.swing.DefaultDownloadHandler; +import com.teamdev.jxbrowser.chromium.swing.DefaultPopupHandler; + +import javax.swing.*; +import java.awt.*; +import java.awt.event.FocusListener; +import java.awt.event.KeyListener; +import java.awt.event.MouseListener; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import java.lang.reflect.Field; +import java.lang.reflect.Modifier; +import java.math.BigInteger; +import java.util.concurrent.TimeUnit; + +public class WebClient extends JFrame { + + static { + // 破解jxbrowser的代码块 导入下面的包是关键 + // import com.teamdev.jxbrowser.chromium.ba; + try { + Field e = ba.class.getDeclaredField("e"); + e.setAccessible(true); + Field f = ba.class.getDeclaredField("f"); + f.setAccessible(true); + Field modifersField = Field.class.getDeclaredField("modifiers"); + modifersField.setAccessible(true); + modifersField.setInt(e, e.getModifiers() & ~Modifier.FINAL); + modifersField.setInt(f, f.getModifiers() & ~Modifier.FINAL); + e.set(null, new BigInteger("1")); + f.set(null, new BigInteger("1")); + modifersField.setAccessible(false); + } catch (Exception e1) { + e1.printStackTrace(); + } + } + + private Browser browser; + + public static void main(String[] args) throws InterruptedException { + WebClient webClient = new WebClient(); + webClient.loadUrl("http://www.baidu.com"); + TimeUnit.SECONDS.sleep(3); + + String html = webClient.getBrowser().getHTML(); + System.out.println(html); + } + + public Browser getBrowser() { + return browser; + } + + public WebClient() { + super(); + initClient(new String[]{}); + } + + private void initClient(String[] args) { + setTitle("WebClient"); + + browser = new Browser(); + BrowserView browserView = new BrowserView(browser); + browser.setDownloadHandler(new DefaultDownloadHandler(browserView)); + browser.setDialogHandler(new DefaultDialogHandler(browserView)); + browser.setPopupHandler(new DefaultPopupHandler()); + + + getContentPane().add(browserView, BorderLayout.CENTER); + setSize(800, 600);//初始大小 + setLocation(0, 0);//位置 + //setUndecorated(true); + //setAlwaysOnTop(true); + addWindowListener(new WindowAdapter() { + @Override + public void windowClosing(WindowEvent e) { + // 关闭应用时要释放资源 + dispose(); + System.exit(0);//0正常退出,1非正常退出 + } + }); + + // 显示 + setVisible(true); + + loadUrl("about:blank"); + } + + /** + * 加载地址 + * + * @param url 地址 + */ + public void loadUrl(String url) { + browser.loadURL(url); + } + + /** + * 全屏模式 + */ + public void setMaximized() { + // 设置为全屏模式 + setExtendedState(JFrame.MAXIMIZED_BOTH); + } + + /** + * 刷新 + */ + public void reload() { + + } + + /** + * 强制刷新 + */ + public void reloadForce() { + + } + + public void addFocusListener(FocusListener listener) { + //cefBrowser.getUIComponent().addFocusListener(listener); + } + + public void addMouseListener(MouseListener listener) { + //cefBrowser.getUIComponent().addMouseListener(listener); + } + + public void addKeyListener(KeyListener listener) { + //cefBrowser.getUIComponent().addKeyListener(listener); + } + + public void executeJavaScript(String javascript) { + //cefBrowser.executeJavaScript(javascript, null, 1); + } + + public void close() { + + dispose(); + System.exit(0); + } +}