Java 如何在GWT UiBinder中向HTML元素动态添加类?
像jQuery这样的JavaScript库能够动态地向DOM元素添加/删除类,如下所示:Java 如何在GWT UiBinder中向HTML元素动态添加类?,java,css,gwt,uibinder,Java,Css,Gwt,Uibinder,像jQuery这样的JavaScript库能够动态地向DOM元素添加/删除类,如下所示: $("#some-element").addClass("make-me-pretty"); 这一点很重要,因为它允许您对这些元素动态应用不同的样式规则 在GWT land中,您可能会有如下UiBinder XML片段: <!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent"> <ui:UiBinder
$("#some-element").addClass("make-me-pretty");
这一点很重要,因为它允许您对这些元素动态应用不同的样式规则
在GWT land中,您可能会有如下UiBinder XML片段:
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:gwt="urn:import:com.google.gwt.user.client.ui">
<div>
<span id="">Some content</span>
<gwt:RadioButton ...>
...
</gwt:RadioButton>
<!-- etc. -->
</div>
</ui:UiBinder>
一些内容
...
,如何在Java代码中动态添加/删除类
,我似乎找不到GWT对UiBinder XML的引用XSD,也找不到对com.google.GWT.
XML的所有元素和属性的法律定义的某种正式引用。例如,在哪里可以找到子元素和属性gwt:RadioButton
支持的文档?不仅仅是一个小部件,所有的小部件!有人能给我指出正确的方向吗提前谢谢 您可以在gwt user-
.jar中找到UiBinder.xsd(至少从2.4.0开始,但我也怀疑是旧版本)
至于您的另一个问题:您总是可以使用
yourUi.getElement().getElementsByTagName( "span" )
然后找到具有匹配的id
的元素
,但这不是很优雅。我其实从来没有遇到过这种情况,;这是一个有趣的问题
希望有帮助
干杯,对于任何UIobject(包括RadioButton),您可以:
在GWT中:styleName=class
更多我想你可以这样做。 将您的“作为UI”字段映射到GWT“SpanElement”
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'>
<div>
Hello, <span ui:field='nameSpan'/>.
</div>
</ui:UiBinder>
你好
在绑定到上述ui.xml文件的类中,可以按如下方式更改该类
interface MyUiBinder extends UiBinder<DivElement, HelloWorld> {}
private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class);
@UiField SpanElement nameSpan;
public HelloWorld() {
setElement(uiBinder.createAndBindUi(this));
}
public void changeClass(){
nameSpan.setClassName("newClass");
}
接口MyUiBinder扩展了UiBinder{}
私有静态MyUiBinder=GWT.create(MyUiBinder.class);
@UiField-span元素名称span;
公共HelloWorld(){
setElement(uiBinder.createAndBindUi(this));
}
公共类(){
nameSpan.setClassName(“新类”);
}
我猜您有一个html页面,可以在其中加载小部件。 您可以在**.ui.xml文件中指定一个类,就像在html页面中一样
<div class="MyClass" align="middle">
<gwt:VerticalPanel>
.......
</gwt:VerticalPanel>
</div>
加载视图时,main.css文件将“看到”类的名称并对其进行操作。谢谢@Anders Rostgaard Bystru(+1)-我马上就来看看这里。关于非小部件类的动态添加/删除有什么想法吗?再次感谢!虽然正确,但我相信orionTurtle询问了如何以编程方式更改活页夹中非@UiField元素的样式。
<div class="MyClass" align="middle">
<gwt:VerticalPanel>
.......
</gwt:VerticalPanel>
</div>
.MyClass{background-color:black;}