atitit.javascript调用java in swt attilax 总结
atitit.javascript调用java in swt attilax 总结
1.1. BrowserFunction 能够分为三类:
1
2.1.1. --------nativeswing的实现2
1. BrowserFunction 简单介绍
为了让读者更好的理解后面的内容,在正式介绍之前。须要让读者简单了解一下 BrowserFunction。BrowserFunction 是个很有意思的类,它能够为 Browser 永久绑定一个 JavaScript 方法。它的构造函数是 BrowserFunction(browser:Browser, name:String),当中 browser 代表 Browser 对象,而 name 则代表绑定该浏览器的 JavaScript 方法名,定义了该 BrowserFunction 对象以后,不论什么在 Browser 显示的网页,都能够訪问名为 name 的 JavaScript 方法。
BrowserFunction 仅仅有一个接口 public Object function(Object[] arguments),它接收网页传来的參数,运行 Java 代码返回结果对象。注意:尽管參数和结果都是 Object 类型。可是他们不接收复杂对象,仅仅接受基本数据类型。也就是 String、int 这种。我预计定义成 Object 的原因是未来将要进行扩展吧。
在 Java 端。绑定了多个的 BrowserFunction。以他们的 name 作为标识。
Browser 对象显示了一个 HTML 页面。当该页面想与 Java 端进行交互时,就发出了事件对象。该事件对象可能是表单提交,也可能是超链接跳转,也可能是 JavaScript 的方法调用,最后该事件触发了某个 BrowserFunction 运行 Java 代码。整体来说。
作者:: 老哇的爪子 Attilax 艾龙。 EMAIL:1466519819@qq.com
转载请注明来源: http://blog.csdn.net/attilax
1.1. BrowserFunction 能够分为三类:
1、直接存储,比方保存到数据库。保存到文件,该类型无详细的反馈,如上图的 BrowserFunction2。
2、2、回调 JavaScript,在调用完 Java 端代码后,须要回调 JavaScript,类似于 Ajax 的效果,能够保持不刷新页面而改变页面的内容,使用的是 Browser 的 exec 方法。3、操作完 Java 代码,须要定义结果对象作为 FreeMarker 的模板根对象,从模板库中选择模板。生成静态 HTML 网页,然后将 Browser 跳转到该网页,作为结果响应,形成类似 HTTP 的请求 -> 响应模型。
1.2. 事件监听
本文提到的事件,能够分为三种类型,各自是表单提交、超链接跳转、JavaScript 直接调用 BrowserFunction。当中 JavaScript 调用 BrowserFunction 因为无需刷新页面,能够直接运行,因此无需对其进行特殊监听。然而。Web 上最为常见的表单提交和超链接跳转,都须要刷新页面,而刷新页面时。则无法调用 BrowserFunction。那么怎样对这些事件进行监听成为文章的一大难点。
Browser 提供了一个事件监听机制,能够为 Browser 加入地址变更监听器,也就是 LocationListener,这个接口有两个方法
2. ati的实现
2.1. 页面调用
mycallJava("submitx",$("#title").val(),$("#content").val());
2.1.1. --------nativeswing的实现
sendNSCommand('play',video);
2.2. java代码
prj。atibrow
public EditorForm() {
String urlgoto = pathx.classPathParent_jensyegeor()
+ "/blogger/index.html";
super.atiBrowserExampleinstance.setUrlgoto(urlgoto);
super.atiBrowserExampleinstance.gotoUrl();
regJsCallbackMeth("submitx", new Closure() {
@Override
public Object execute(Object arg0) throws Exception {
List ps = (List) arg0;
String p1tit = (String) ps.get(0);
String p2_txt = (String) ps.get(1);
System.out.println(p1tit + p2_txt);
submitx(p1tit, p2_txt);
// System.out.println(b);
return null;
}
});
}
---nativeswing的实现
#
webBrowser.addWebBrowserListener(new WebBrowserAdapter() {
// js java comm
public void commandReceived(WebBrowserCommandEvent e) {
String command = e.getCommand();
System.out.println(" receve commd: " + command);
Object[] parameters = e.getParameters();
if ("cmd1".equals(command)) {
String html = (String) parameters[0];
System.out.println(html);
}
3. ---code
public void regJsCallbackMeth(String string, Closure closure) {
CallJava.eventMap.put(string, closure);
}
package aaBaolilo;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.browser.BrowserFunction;
import com.attilax.Closure;
public final class CallJava extends BrowserFunction {
public static Map eventMap=new HashMap();
public static void main(String[] args) {
System.out.println("--");
}
/**
* Constructor
*
* @param arg0
* @param arg1
*/
public CallJava (Browser arg0, String arg1) {
super(arg0, arg1);
}
/**
* {@inheritDoc}
*
* @see org.eclipse.swt.browser.BrowserFunction#function(java.lang.Object[])
*/
@Override
public Object function(Object[] arg0) {
// logger.debug("ImageSelect");
String meth=arg0[0].toString();
List li=new ArrayList ();
for(int i=1;i<arg0.length;i++)
{
li.add(arg0[i]);
}
Closure evet=(Closure) eventMap.get(meth);
try {
returnevet.execute(li);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return super.function(arg0);
}
}
4. 參考
基于 SWT Browser 与 Freemarker 的 Java 桌面开发.htm
atitit.javascript调用java in swt attilax 总结的更多相关文章
- Android在使用WebView时,通过Javascript调用JAVA函数
webView = (WebView) findViewById(R.id.article_webview); //WebView启用Javascript脚本运行 webView.getSetting ...
- atitit.js javascript 调用c# java php后台语言api html5交互的原理与总结p97
atitit.js javascript 调用c# java php后台语言api html5交互的原理与总结p97 1. 实现html5化界面的要解决的策略1 1.1. Js交互1 1.2. 动态参 ...
- JsBridge实现Javascript和Java的互相调用
前端网页Javascript和Native互相调用在手机应用中越来越常见,JsBridge是最常用的解决方案. 在Android开发中,能实现Javascript与Native代码通信的,有4种途径: ...
- JavaScript调Java
1.映射Java对象到JavaScript对象上 MainActivity.java package com.example.jsdemo; import android.os.Bundle; imp ...
- Android-WebView与本地HTML (HTML调用-->Java的方法)
上一篇博客 Android-WebView加载网络图片&网页 介绍了 使用WebView去加载网络上的图片与网页; 此篇博客专门介绍 Android-WebView与本地HTML (HTML调 ...
- Atitit 图像处理 调用opencv 通过java api attilax总结
Atitit 图像处理 调用opencv 通过java api attilax总结 1.1. Opencv java api的支持 opencv2.4.2 就有了对java api的支持1 1. ...
- Atitit 插件机制原理与设计微内核 c# java 的实现attilax总结
Atitit 插件机制原理与设计微内核 c# java 的实现attilax总结 1. 微内核与插件的优点1 2. 插件的注册与使用2 2.1. Ioc容器中注册插件2 2.2. 启动器微内核启动3 ...
- Atitit.java图片图像处理attilax总结
Atitit.java图片图像处理attilax总结 BufferedImage extends java.awt.Image 获取图像像素点 image.getRGB(i, lineIndex); ...
- Atitit.java图片图像处理attilax总结 BufferedImage extends java.awt.Image获取图像像素点image.getRGB(i, lineIndex); 图片剪辑/AtiPlatf_cms/src/com/attilax/img/imgx.javacutImage图片处理titit 判断判断一张图片是否包含另一张小图片 atitit 图片去噪算法的原理与
Atitit.java图片图像处理attilax总结 BufferedImage extends java.awt.Image 获取图像像素点 image.getRGB(i, lineIndex); ...
随机推荐
- 深入理解Docker Volume(一)
想要了解Docker Volume,首先我们需要知道Docker的文件系统是如何工作的.Docker镜像是由多个文件系统(只读层)叠加而成.当我们启动一个容器的时候,Docker会加载镜像层并在其上添 ...
- linux c:关联变量的双for循环
举例说明: 比如打印一个倒三角形. * * * * * * * * * * 第一层循环为行数,第二层循环为每行打印的*数,且随着行数的变化,打印的*数也随着改变. 这就是关联变量的双层循环.我的做法是 ...
- python3.3使用tkinter实现猜数字游戏代码
发布时间:2014-06-18 编辑:www.jbxue.com 原文地址:http://www.jbxue.com/article/python/22152.html python3.3使用tk ...
- FZU Problem 2105 Digits Count
Problem Description Given N integers A={A[0],A[1],...,A[N-1]}. Here we have some operations: Operati ...
- csdn能不靠点谱啊
以前的时候在csdn上有一个博客,那时经常出错,所以就不用了,后来在百度上开了个博客,后以空间升级了,升级之后,那叫一个垃圾,不用了,现在返回头来再用csdn,刚开始两天还好,没用两天又不行了,想在上 ...
- DirectStream、Stream的区别-SparkStreaming源码分析02
转http://hadoop1989.com/2016/03/15/KafkaStreaming/ 在Spark1.3之前,默认的Spark接收Kafka数据的方式是基于Receiver的,在这之后的 ...
- div设置contentEditable="true"作为文本编辑器,定位光标解决办法
function set_focus(el) { el = el[0]; // jquery 对象转dom对象 el.focus(); if ($.browser.msie) { ...
- uboot的lds文件分析
OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") ...
- [未解决]Ajax-读取并解析XML,动态生成select下拉列表框
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
- eclipse新建tomcat server但是总是报404的解决方法
今天在eclipse中新建了tomcat server,但是由于一些配置出了问题,导致总是出现404报错,具体情况如下 症状: tomcat在eclipse里面能正常启动,而在浏览器中访问http:/ ...