java djnativeswing_DJNativeSwing:java内嵌浏览器的常用方法

本文介绍了如何使用Java DJNativeSwing库创建内嵌浏览器,包括所需的jar包、导入的类,以及创建和配置JWebBrowser对象的方法。通过自定义WebBrowserFunction重写JS方法,并展示了JWebBrowser的常用操作,如导航、执行JavaScript、处理WebBrowserEvent等。
摘要由CSDN通过智能技术生成

DJNativeSwing:java内嵌浏览器的常用方法

最近用到了java内嵌浏览器DJNativeSwing,在此总结一下DJNativeSwing的常用方法,方便将来查找使用,如有不足欢迎批评指正。

1.需要的jar包:

DJNativeSwing.jar

DJNativeSwing-SWT.jar

swt-4.3-win32-win32-x86-1.7.0_11-b21.jar

2.用到的import语句:

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.SwingUtilities;

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

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

3.创建java浏览器窗口的相关方法:

(1)创建一个类,继承JFrame

(2)在这个类中创建一个方法,使用以下语句进行窗口相关设置:

//窗口标题

this.setTitle("我的浏览器窗口");

//窗口大小

this.setSize(1400, 700);

//点击窗口右上角自带的关闭按钮后,调用任意已注册 WindowListener 的对象后自动隐藏并释放该窗体

this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

//注册窗口关闭事件监听器(可自定义窗口关闭事件)

this.addWindowListener(new WindowAdapter()

{

@Override

public void windowClosed(WindowEvent event)

{

//关闭窗口

super.windowClosed(event);

}

});

/*------------------------------------------------------------*/

//创建JWebBrowser对象

JWebBrowser webBrowser = new JWebBrowser(JWebBrowser.destroyOnFinalization());

//设置为不显示菜单

webBrowser.setMenuBarVisible(false);

//在JFrame的中间添加JWebBrowser对象

this.add(webBrowser, BorderLayout.CENTER);

//创建JWebBrowser需要的自定义监听器对象

//(实际上WebBrowserAdapter类实现了WebBrowserListener接口,可以新建类继承WebBrowserAdapter,重写相应方法,之后注册,实现自定义监听)

WebBrowserAdapter adapter = new WebBrowserAdapter();

//注册这个监听器

webBrowser.addWebBrowserListener(adapter);

/*------------------------------------------------------------*/

//以下是通过注册自定义方法webBrowser.registerFunction()实现重写js方法

try

{

//该方法是为了避免在EDT中执行长时间的操作导致页面卡住,将一个任务放到EDT线程中,EDT会在适当的时候进行调用。

//与invoikeLater的相同点:都可以把可运行对象排入事件派发线程的队列中。

//不同点:invokeLater在把可运行的对象放入队列后就返回,而invokeAndWait一直等待知道已启动了可运行的run方法才返回。

SwingUtilities.invokeAndWait(new Runnable()

{

@Override

public void run()

{

//注册自定义方法"alert"

webBrowser.registerFunction(new WebBrowserFunction("alert")

{

@Override

public Object invoke(JWebBrowser arg0, Object... arg1)

{

System.out.println("jwebBrowser弹出alert框,内容是:" + arg1[0] + "");

return null;

}

});

//注册自定义方法"confirm"

webBrowser.registerFunction(new WebBrowserFunction("confirm")

{

@Override

public Object invoke(JWebBrowser arg0, Object... arg1)

{

System.out.println("webBrowser弹出confirm框:" + providerCode + "");

return null;

}

});

}

});

}

catch (InterruptedException e)

{

e.printStackTrace();

}

catch (InvocationTargetException e)

{

e.printStackTrace();

}

/*------------------------------------------------------------*/

//创建面板容器对象jPanel,居中

JPanel jPanel = new JPanel(new FlowLayout(FlowLayout.CENTER));

//创建按钮对象,传入按钮名

JButton jButton = new JButton("我的按钮");

//按钮大小

jButton.setSize(50, 20);

//在jPanel中添加按钮

jPanel.add(jButton, BorderLayout.WEST);

//在按钮上注册监听器

jButton.addActionListener(new ActionListener()

{

@Override

public void actionPerformed(ActionEvent e)

{

System.out.println("点击按钮后输入这句话");

}

});

/*------------------------------------------------------------*/

//设置为可见

this.setVisible(true);

//总是置顶

this.setAlwaysOnTop(true);

//显示在前方

this.toFront();

(3)创建这个类的对象,就可以看到java浏览器窗口了。

(4)补充:

还有一个使用@PostConstruct注解配置的方法,会在Servlet初始化后、init方法前执行。在一个@Component("DJNative")标注的自己创建的类DJNative.java中。

@PostConstruct

public void initNativeSwing() {

System.out.println("DJNativeSwing-setPreferredLookAndFeel");

UIUtils.setPreferredLookAndFeel();

System.out.println("DJNativeSwing-open");

NativeInterface.open();

System.out.println("DJNativeSwing初始化成功");

}

也就是说,在创建这个类的对象之前,要执行NativeInterface.open();方法,不然会报错。例如:

public static void main(String[] args) {

//UIUtils.setPreferredLookAndFeel();

NativeInterface.open();

//创建继承JFrame类的View类对象

new View();

}

4.JWebBrowser常用方法:

//创建JWebBrowser对象

JWebBrowser webBrowser = new JWebBrowser(JWebBrowser.destroyOnFinalization());

//导航到指定网址

webBrowser.navigate("www.baidu.com");

//传入自定义html文本

webBrowser.setHTMLContent("我是自定义HTML

//执行js方法

webBrowser.executeJavascript("console.log('我是js')");

//执行js方法,有返回值

webBrowser.executeJavascriptWithResult("console.log('我是js')");

//源码中获取cookie信息的方法

public static String getCookie(String url, String name) {

return webBrowserStatic.getCookie(url, name);

}

//实际获取cookie信息的方法

SwingUtilities.invokeAndWait(new Runnable()

{

@Override

public void run( )

{

String cookieValue = webBrowser.getCookie(webBrowser.getResourceLocation(), cookieName);

}

});

//源码中设置cookie信息的方法

public static void setCookie(String url, String value) {

webBrowserStatic.setCookie(url, value);

}

5.WebBrowserEvent常用方法,该对象在JWebBrowser的监听器中出现

//监听器中的对象

WebBrowserEvent e;

//得到页面加载进度,100时加载完毕

e.getWebBrowser().getLoadingProgress() == 100

6.js常用方法:

//自定义网页离开事件

window.οnbefοreunlοad=null;

//自定义alert方法

window.alert = function(msg){

console.log(msg);

};

//获取当前页面状态

return document.readyState;

该属性返回以下值:

uninitialized - 还未开始载入

loading - 载入中

interactive - 已加载,文档与用户可以开始交互

complete - 载入完成

//设置剪贴板的内容

clipboardData.setData('text', '');

//读出当前剪贴板里的内容

clipboardData.getData('text');

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值