我正在尝试使用JSNI中的CSS资源客户端捆绑包,但找不到任何有用的代码。我想知道如何在JSNI中调用CSS资源,以及如何在JSNI中使用客户端包。
我的正常代码:-
Resource.INSTANCE.button().ensureInjected();
Resource res = GWT.create(Resource.class);
button.setStyleName(res.button().gwtbutton());
如何用jsni编写?
这里Resource ---->是接口扩展clientbundle。gwtbutton --->是CSS。
我已经在此链接中阅读了https://groups.google.com/forum/#!topic/google-web-toolkit/94v4tjCZiBo,我们可以通过jsni使用CssResource。但是我不清楚他的用法。
这里没有魔术(好的,有一点,但是在幕后)。您Resource
接口的实现是由GWT自动生成的,所以当你调用res.button().gwtbutton()
,它会为你从一个CSS文件中引用的样式返回一个合适的名字。该名称可能会被混淆,带有前缀等。对您而言,这无关紧要-最后,它只是一个字符串,即样式的名称。只需将其作为传递String
给您的JSNI方法:
public native void addStyle(String style) /*-{
// Add style to a DOM element
}-*/;
// Invoke like so:
addStyle(res.button().gwtbutton());
如果要直接在JSNI代码中使用ClientBundle:
// First, get Resource instance from a static field
var resource = @package.Resource::INSTANCE;
// Then, get the CssResource with the style
var button = [email protected]::button()();
// Finally, get the style's name
var gwtButton = [email protected]::gwtButton()();
package.Resource
用接口的适当限定名称(包+类名称)代替Resource
。如果需要,请使用Google Plugin for Eclipse提供的代码完成功能。对button
方法返回的类型执行相同的操作(可能是一些接口extended CssResource
)。
如果您对语法感到困惑,请翻阅文档或浏览有关Java Native Interface的一些教程-它与JSNI有很多相似之处,并且可能会得到更好的记录。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句