我有一个简单的TabLayoutPanel用UIBinder制作.选项卡呈现但没有内容.它在HTML中,但它总是折叠(元素上设置的内联样式使其崩溃).据我所知,这与我见过的每个TabLayoutPanel示例相同.其他小部件渲染得很好.该项目只是默认HTML和代码被剥离的基本示例.
XML是:
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:g="urn:import:com.google.gwt.user.client.ui">
<g:TabLayoutPanel barHeight='22' barUnit='PX'>
<g:tab>
<g:header>Tab A</g:header>
<g:HTML>
asdf
<p>asdfasdf</p>
</g:HTML>
</g:tab>
<g:tab>
<g:header>Tab B</g:header>
<g:Label>blah</g:Label>
</g:tab>
<g:tab>
<g:header>Tab C</g:header>
<g:Label>blah</g:Label>
</g:tab>
</g:TabLayoutPanel>
</ui:UiBinder>
Run Code Online (Sandbox Code Playgroud)
而Java是:
public class Main extends Composite {
private static MainUiBinder uiBinder = GWT.create(MainUiBinder.class);
interface MainUiBinder extends UiBinder<Widget, Main> {
}
public Main() {
initWidget(uiBinder.createAndBindUi(this));
}
}
Run Code Online (Sandbox Code Playgroud)
我将它添加到我的应用程序中,如下所示:
public void onModuleLoad() {
RootPanel.get().add(new Main());
}
Run Code Online (Sandbox Code Playgroud)
我惊呆了.这应该很简单.我一定是想念一些愚蠢的事.有任何想法吗?
我有一个类似于以下的结构
<g:TabLayoutPanel ui:field="rightTabPanel"
width="100%" height="100%"
barUnit="EM" barHeight="3">
<g:tab>
<g:header>Graph</g:header>
<g:FlowPanel ui:field="graphContent"/>
</g:tab>
<g:tab>
<g:header>Data</g:header>
<g:FlowPanel ui:field="dataContent"/>
</g:tab>
</g:TabLayoutPanel>
Run Code Online (Sandbox Code Playgroud)
我有两个选项卡,其中显示图表,另一个显示数据.但是,选项卡内的内容不可见.如果我放
<g:FlowPanel ui:field="graphContent"/>
Run Code Online (Sandbox Code Playgroud)
在TabLayoutPanel之外我可以看到图形,但是如果我如上所示放置图形是不可见的.任何线索都会有所帮助.提前致谢.
我想使用多个小部件共享一个CSS.
我可以看到css类名称被混淆,但是当我在firefox/chrome中检查元素时,类定义没有显示出来.这是我的代码.任何人都可以建议我错过了什么?谢谢.
style.css文件
.nameSpan { color: #3E6D8E; background-color: #E0EAF1;}
Run Code Online (Sandbox Code Playgroud)
Resources.java
public interface Resources extends ClientBundle {
@Source("Style.css")
Style style();
public interface Style extends CssResource {
String nameSpan();
}
}
Run Code Online (Sandbox Code Playgroud)
uibinder.ui.xml
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:g='urn:import:com.google.gwt.user.client.ui'>
<ui:with field='res' type='com.my.app.widgets.logoname.Resources'/>
<g:HTMLPanel>
<div>
Well hello there
<g:InlineLabel ui:field='nameSpan' styleName="res.style.nameSpan">kevin</g:InlineLabel>
</div>
</g:HTMLPanel>
</ui:UiBinder>
Run Code Online (Sandbox Code Playgroud)
uibinder.class
public class uibinder extends Composite {
private static uibinderUiBinder uiBinder = GWT.create(uibinderUiBinder.class);
interface uibinderUiBinder extends UiBinder<Widget, uibinder> {}
@UiField(provided = true) final Resources res; // the style doesn't show no matter provided=true …Run Code Online (Sandbox Code Playgroud) 我尝试为uibinder widget设置唯一的id.但是失败.my构造函数如下所示
public CustomUIWidget() {
initWidget(uiBinder.createAndBindUi(this));
this.getWidget().getElement().setId(DOM.createUniqueId());
System.out.println(this.getWidget().getElement().getId()); //put debug line here, value is empty
}
Run Code Online (Sandbox Code Playgroud) 我与GWT的一个常见设计是创建一个包含两个孩子的小部件:A和B.
我在与我的主要小部件相关联的uibinder文件中声明了这两个小部件A和B.
我想要做的是根据if语句加载或不加载小部件A.
理想的方法是为widget A设置provided = true,并在我不想加载这个widget时将widget A设置为null.但是GWT会引发错误.
有没有办法在uibinder中声明小部件然后不加载它们?
谢谢
编辑:经过大量讨论后,理想的方法是在optional = true时声明字段"provided = true"和"optional = true",如果字段为null,则createAndBindUI不能抛出异常.这是一种干净的方法.
如果您认为此功能必须存在于GWT中,请为此问题加注星标:http: //code.google.com/p/google-web-toolkit/issues/detail?id = 5699
编辑2:使用托马斯描述的LazyPanel似乎是一种更好的方法来处理这个问题.
我有一个要求,当点击一个按钮时,应该提示用户弹出/对话框输入一些额外的细节,如姓氏,DOB等.我试图玩,window.confirm()但我认为这不适合我目的.有人可以帮助我如何通过UIBinder在GWT中实现这一目标吗?
我在UI binder.xml中试过这样的东西
<g:HTMLPanel visible="false" >
<g:DialogBox ui:field="dialogPanel"
animationEnabled="true" modal="false" glassEnabled="false">
<g:caption>More Details</g:caption>
<table>
<tr>
<td colspan="2" align="center">
<g:Datepicker ui:field="DOB">DOB:</g:Datepicker>
</td>
</tr>
<tr>
<td>UserName:</td>
<td>
<g:TextBox ui:field="usernameTextBox" />
</td>
</tr>
<tr>
<td></td>
<td align="right">
<g:Button ui:field="loginButton">OK</g:Button>
</td>
</tr>
</table>
</g:DialogBox>
</g:HTMLPanel>
Run Code Online (Sandbox Code Playgroud)
我不确定要使用哪一个:弹出窗口或对话框!
谢谢.
我想用uiBinder在GWT中使用像(a href ="..."/>)这样的链接或按钮.
我发现小部件"超链接"但我不知道我是如何使用它的.
GWT提供以下作为构建单元格的示例CellList:
/**
* A simple data type that represents a contact.
*/
private static class Contact {
private static int nextId = 0;
private final int id;
private String name;
public Contact(String name) {
nextId++;
this.id = nextId;
this.name = name;
}
}
/**
* A custom {@link Cell} used to render a {@link Contact}.
*/
private static class ContactCell extends AbstractCell<Contact> {
@Override
public void render(Context context, Contact value, SafeHtmlBuilder sb) {
if (value != null) { …Run Code Online (Sandbox Code Playgroud) 我有以下警告:
00:48:06.843 [WARN] [XXXX] Line 71 column 11: encountered ":".
Was expecting one of: "}" "+" "-" "," ";" "/" <STRING> <IDENT> <NUMBER> <URL> <PERCENTAGE> <PT> <MM> <CM> <PC> <IN> <PX> <EMS> <EXS> <DEG> <RAD> <GRAD> <MS> <SECOND> <HZ> <KHZ> <DIMEN> <HASH> <IMPORTANT_SYM> <UNICODERANGE> <FUNCTION>
Run Code Online (Sandbox Code Playgroud)
在第一行71我有以下行
<ui:style>
...
.menuPopup {
position:absolute;
top: 5px;
right: -80px;
width:100px;
background-color: #F2F2F2;
-moz-box-shadow: -1px 2px 5px 1px rgba(0, 0, 0, 0.5);
-webkit-box-shadow: -1px 2px 5px 1px rgba(0, 0, 0, 0.5);
box-shadow:-1px 2px …Run Code Online (Sandbox Code Playgroud) 我有一个与UiBinder有关的问题.
我有以下UiBinder文件:
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:g="urn:import:com.google.gwt.user.client.ui">
<g:HTMLPanel>
<div>
<g:VerticalPanel>
<g:Label>Please enter your password:</g:Label>
<g:FlowPanel>
<g:PasswordTextBox ui:field="textbox"/>
<g:Button ui:field="button" text="Login" styleName="?????"/>
</g:FlowPanel>
</g:VerticalPanel>
</div>
</g:HTMLPanel>
</ui:UiBinder>
Run Code Online (Sandbox Code Playgroud)
如果我把样式名称放在???中,它可以正常工作.
但是,我们有一个常量文件(不是i18n常量),它包含所有css名称作为常量.喜欢:
public class CSSConstants {
public static final String CSS_TITLE = "title";
public static final String CSS_TEXT_NORMAL = "text_normal";
public static final String CSS_TEXT_ERROR = "text_error";
public static final String CSS_TEXT_ERROR = "button blue";
.......
}
Run Code Online (Sandbox Code Playgroud)
我想知道如何在UiBinder模板中引用这个常量文件?
非常感谢