|
|
|
@ -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);
|
|
|
|
|
}
|
|
|
|
|
}
|