JSNI
是将少量的
Javascript
代码嵌入到
java
中,和java中的
JNI
很类似。
先来看看一段代码
其中
native void helloJSNI()
/*-{
$wnd.alert("Hello, GWT JSNI!");
}-*/;
native
是关键子 表明它是本地方法
Java
S
cript
代码块写在
/*-{ }-*/
中间 。
GWT
提供了 $wnd
和 $doc
变量,它们分别代表窗口和文档对象。
在扩展库的时候
(
1
)首先在
xiangmu.html
中添加如下代码
<script type="text/Java
S
cript"src="Javascript/prototype.js">
</script>
<script type="text/Java
S
cript"src="Javascript/rico.fx.js">
</script>
这两个。
js
可以实现组件变成圆角
(
2
)
创建一个
java
类
Coner.java
(
3
)添加一个私有方法
private native static void corner
(Element element)
/*-{
$wnd._nativeExtensions = false;
$wnd.Rico.Corner.round(element, null);
}-*/
$wnd.Rico.Corner.round(element,null);
这段代码调用了
rico.fx.js
中的
Rico.Corner.round(element,null)
方法。在这里要提醒的是得到一个
Rico
类的对象不可以用
new Rico();
因为
GWT
编译所产生的所产生的代码在
iframe
中运行,所以要用到你所包含的对象的时候要用
$wnd
来调用。
(
4
)在写一个类方法来调用他
public static void corner(Widget widget)
{
corner(widget.getElement(), null);
}
(
5
)已经
OK
了