atitit.javascript调用java in swt attilax 总结

1. BrowserFunction 简单介绍1

1.1. BrowserFunction 能够分为三类:
1

1.2. 事件监听2

2. ati的实现2

2.1. 页面调用2

2.1.1. --------nativeswing的实现2

2.2. java代码2

3. ---code4

4. 參考5

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 总结的更多相关文章

  1. Android在使用WebView时,通过Javascript调用JAVA函数

    webView = (WebView) findViewById(R.id.article_webview); //WebView启用Javascript脚本运行 webView.getSetting ...

  2. 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. 动态参 ...

  3. JsBridge实现Javascript和Java的互相调用

    前端网页Javascript和Native互相调用在手机应用中越来越常见,JsBridge是最常用的解决方案. 在Android开发中,能实现Javascript与Native代码通信的,有4种途径: ...

  4. JavaScript调Java

    1.映射Java对象到JavaScript对象上 MainActivity.java package com.example.jsdemo; import android.os.Bundle; imp ...

  5. Android-WebView与本地HTML (HTML调用-->Java的方法)

    上一篇博客 Android-WebView加载网络图片&网页 介绍了 使用WebView去加载网络上的图片与网页; 此篇博客专门介绍 Android-WebView与本地HTML (HTML调 ...

  6. Atitit 图像处理 调用opencv 通过java  api   attilax总结

    Atitit 图像处理 调用opencv 通过java  api   attilax总结 1.1. Opencv java api的支持 opencv2.4.2 就有了对java api的支持1 1. ...

  7. Atitit 插件机制原理与设计微内核 c# java 的实现attilax总结

    Atitit 插件机制原理与设计微内核 c# java 的实现attilax总结 1. 微内核与插件的优点1 2. 插件的注册与使用2 2.1. Ioc容器中注册插件2 2.2. 启动器微内核启动3 ...

  8. Atitit.java图片图像处理attilax总结

    Atitit.java图片图像处理attilax总结 BufferedImage extends java.awt.Image 获取图像像素点 image.getRGB(i, lineIndex); ...

  9. 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); ...

随机推荐

  1. MATLAB(3)——GUI界面设计入门

    作者:桂. 时间:2017-03-01  18:43:35 链接:http://www.cnblogs.com/xingshansi/articles/6485688.html 声明:转载请注明出处, ...

  2. STORM在线业务实践-集群空闲CPU飙高问题排查(转)

    最近将公司的在线业务迁移到Storm集群上,上线后遇到低峰期CPU耗费严重的情况.在解决问题的过程中深入了解了storm的内部实现原理,并且解决了一个storm0.9-0.10版本一直存在的严重bug ...

  3. 使用Xcode 5创建Cocoa Touch Static Library(静态库)

    转自:http://blog.csdn.net/jymn_chen/article/details/21036035 首先科普一下静态库的相关知识: 程序编译一般需经预处理.编译.汇编和链接几个步骤. ...

  4. python(33)多进程和多线程的区别

    多线程可以共享全局变量,多进程不能.多线程中,所有子线程的进程号相同:多进程中,不同的子进程进程号不同. #!/usr/bin/python # -*- coding:utf-8 -*- import ...

  5. 08、通过自定义依赖属性,用 StateTrigger 修改全局主题样式

    在 Win 10 的 UWP 中,需要在 xaml 中,通过使用 StateTrigger 修改全局的文本大小.Background.画刷等依赖属性等主题样式.下面只针对字体大小进行描述,其它依赖属性 ...

  6. Hbase shell 常用命令(1)

    下面我们看看HBase Shell的一些基本操作命令,我列出了几个常用的HBase Shell命令,如下: 名称 命令表达式 创建表 create '表名称', '列名称1','列名称2','列名称N ...

  7. Spark踩坑记——数据库(Hbase+Mysql)转

    转自:http://www.cnblogs.com/xlturing/p/spark.html 前言 在使用Spark Streaming的过程中对于计算产生结果的进行持久化时,我们往往需要操作数据库 ...

  8. 分享一个上传图片,图片压缩Unsupported Image Type解决方案

    http://blog.csdn.net/frankcheng5143/article/details/53185201 *************************************** ...

  9. 关于HTML、XHTML、CSS、XML的区别

    1.HTML(Hyper Text Mark-up Language) HTML(Hyper Text Mark-up Language)即超文本标记语言或超文本链接标示语言,是为“网页创建和其他可在 ...

  10. Android开发日记(二)

    HashMap<String, Object> map;定义一个HashMap用来传递字符 TextView textView_JobTitle=(TextView)findViewByI ...