标签: uibinder

GWT - 如何在uibinder xml文件中定义布局层次结构外的窗口小部件

这是我的第一篇文章.我希望有人可以帮助我.
我正在寻找一种方法来分别在UiBinder XML布局文件中定义一个小部件,而不是布局层次结构的一部分.这是一个小例子:

<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:g="urn:import:com.google.gwt.user.client.ui">

<g:Label ui:field="testlabel" text="Hallo" />
<g:HTMLPanel>       
...
</g:HTMLPanel>
Run Code Online (Sandbox Code Playgroud)

编译失败,因为ui:UiBinder元素只需要一个子元素.
在Java Code中,我将照常访问和绑定Label小部件:

@UiField Label testlabel;
Run Code Online (Sandbox Code Playgroud)

例如,当您定义Grid或FlexTable时,这可能很有用 - 我想在XML布局文件中定义表头的标签,而不是在代码中以编程方式定义.

提前谢谢了

gwt uibinder

5
推荐指数
1
解决办法
3980
查看次数

如何使用UiBinder处理VerticalPanel中的多个ClickEvent?

假设以下*.ui.xml文件:

<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
        xmlns:g='urn:import:com.google.gwt.user.client.ui'>
<g:VerticalPanel>
    <g:Label ui:field="Label1"></g:Label>
    <g:Label ui:field="Label2"></g:Label>
    <g:Label ui:field="Label3"></g:Label>
</g:VerticalPanel>
Run Code Online (Sandbox Code Playgroud)

如果我现在想要将ClickHandlers添加到所有三个标签,如下所示:

@UiHandler("Label1")
void handleClick(ClickEvent event) {
    //do stuff
}
@UiHandler("Label2")
void handleClick(ClickEvent event) {
    //do stuff
}
@UiHandler("Label3")
void handleClick(ClickEvent event) {
    //do stuff
}
Run Code Online (Sandbox Code Playgroud)

我收到一个错误,因为我有3个同名的方法.有没有办法解决这个问题,除了创建自定义小部件并将其添加到VerticalPanel?

events gwt event-handling uibinder

5
推荐指数
2
解决办法
3997
查看次数

动态添加多个GWT RadioButton组

在我的应用程序中,我有一个小部件面板(所有相同类型的小部件),以及允许用户向面板添加和删除小部件的按钮.每个小部件内部都是GWT RadioButton组.小部件使用GWT UiBinder,因此在我的ui.xml文件中,我给每个RadioButton一个组名,以便它们链接在一起.

但是,当这个小部件中的2个或更多个添加到面板时,这成为一个问题,因为所有小部件中的所有RadioButton都具有相同的组名.我希望每个小部件中的每个RadioButton组都独立于其他小部件.我怎样才能做到这一点?

gwt radio-button uibinder

5
推荐指数
1
解决办法
2187
查看次数

GWT UiBinder CSS样式

我为VerticalLayout面板的边框声明了一些颜色,如:

<ui:style>
    .onMouseOverBorderColor {border-color: red; border-style: outset}
    .onMouseOutBorderColor {border-color: black; border-style: outset}
</ui:style>
Run Code Online (Sandbox Code Playgroud)

然后我想根据鼠标的位置更改面板边框的颜色,并添加到我的窗口小部件的构造函数中:

    clickable.addMouseOverHandler(new MouseOverHandler() {

        @Override
        public void onMouseOver(MouseOverEvent event) {
            GWT.log("mouse over");
            border.setStyleName("onMouseOverBorderColor");
        }

    });
    clickable.addMouseOutHandler(new MouseOutHandler() {

        @Override
        public void onMouseOut(MouseOutEvent event) {
            GWT.log("mouse out");
            border.setStyleName("onMouseOutBorderColor");
        }

    });
Run Code Online (Sandbox Code Playgroud)

但是......没有任何反应!我做错了什么?

建议后的代码(不起作用):

<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
    xmlns:g="urn:import:com.google.gwt.user.client.ui">

    <ui:style>
        .fontStyleTitle {font-weight: bold }        
        .border {border-color: black; border-style: outset}
    .border:hover {border-color: red; border-style: outset}
    </ui:style>

    <g:FocusPanel ui:field="clickable">
            <g:VerticalPanel ui:field="border" borderWidth="1" styleName="style.border">
                <g:Image ui:field="myImage"/>
                <g:Label ui:field="myTitle" horizontalAlignment="ALIGN_CENTER" styleName="{style.fontStyleTitle}"/>
            </g:VerticalPanel>          
    </g:FocusPanel>

</ui:UiBinder> 
Run Code Online (Sandbox Code Playgroud)

和java类:

public …
Run Code Online (Sandbox Code Playgroud)

java gwt uibinder

5
推荐指数
2
解决办法
1万
查看次数

GWT"CSS属性上下文中带变量的模板"警告不好?

我使用混淆的风格,例如.

    <ui:style>
        .explanation {
            text-align: center;
        }
    </ui:style>
...
    <g:HTMLPanel>
        <div class="{style.explanation}">
...
Run Code Online (Sandbox Code Playgroud)

这是不好的做法吗?

当我查看HTML时看起来没问题,或者我误解了警告..

我在GWT的开发模式中收到以下警告:

Template with variable in CSS attribute context: 
The template code generator cannot guarantee HTML-safety of the template
 -- please inspect manually or use SafeStyles to specify arguments in a CSS attribute context
Run Code Online (Sandbox Code Playgroud)

css gwt uibinder

5
推荐指数
1
解决办法
2654
查看次数

以编程方式将UiBinder样式更改为另一个UiBinder样式

简单的例子.我在UiBinder中声明了2个样式:

    <ui:style>
    .success {
        font-size: 13px;
        margin: 15px;
        font-weight: bold;
        display: inline;
        padding: 3px 7px;
        background: #FFF1A8;
    }
    .error {
        font-size: 13px;
        margin: 15px;
        font-weight: bold;
        display: inline;
        padding: 3px 7px;
        background: #990000;
        color: #fff;
    }
</ui:style>
Run Code Online (Sandbox Code Playgroud)

我也有一个标签,其中一个也适用.

    <g:Label ui:field="statusLabel" styleName='{style.success}' />
Run Code Online (Sandbox Code Playgroud)

在UiBinder中,有没有一种方法可以以编程方式将样式切换为错误样式?很高兴能够在窗口小部件中组织我的CSS,我还没有找到另一种组织它的好方法.

如果我问的是不可能的,我应该如何在gwt中组织我的CSS,这样我就不会有一大堆风格,而且也很简单,也可用?我想有一个聪明的方法来使用ClientBundle,但我还没弄明白.我还认为能够通过在UiBinder中保留所有内容而不会弄乱其他文件来做上述方法会更方便.无论哪种方式,请在失控之前帮助我!

gwt uibinder

5
推荐指数
1
解决办法
2162
查看次数

在GWT中有没有办法为整个视图而不是单个输入元素创建KeyPressEvent?

现在我有以下代码工作:

@UiHandler("usernameTextBox")
void onUsernameTextBoxKeyPress(KeyPressEvent event) {
    keyPress(event);
}

@UiHandler("passwordTextBox")
void onPasswordTextBoxKeyPress(KeyPressEvent event) {
    keyPress(event);
}

void keyPress(KeyPressEvent event) {
    if (event.getNativeEvent().getKeyCode() == KeyCodes.KEY_ENTER) {
        submit();
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望能够为视图中的所有元素只有一个侦听器,而不会为每个文本框复制事件.

最终目标是,如果他们按下回车键,无论他们在页面上的哪个位置,都应该提交表单.

谢谢!

java gwt uibinder

5
推荐指数
2
解决办法
2277
查看次数

UiBinder中的通用小部件

我刚创建了widget:

public class myWidget<T> extends FlowPanel {
private T value;

public T getValue()
{
    return value;
}

public myWidget(T[] values) {
    for (T value : values)
    {
        //do action
    }
}
Run Code Online (Sandbox Code Playgroud)

如何使用UiBinder添加它?有可能吗?

gwt uibinder

5
推荐指数
1
解决办法
2905
查看次数

自定义类的GWT延迟绑定失败:在urn:import中没有匹配"..."的类:

我正在开发一些我希望能够与UiBinder一起使用的自定义小部件.不幸的是,我继续浪费我的生命,追逐以下错误:

在urn中没有匹配"..."的类:import:...

这似乎是在类中有任何阻止GWT编译器处理它的错误时抛出的全部异常.这包括类的整个依赖关系树中的任何内容.

为了节省我自己和遇到同一问题的任何人一些时间和痛苦,让我们在这里列出一个最意想不到的,很难找到原因的列表.我将从我的最新版开始,这让我决定在这里发布.

gwt class matching uibinder

5
推荐指数
1
解决办法
1552
查看次数

如何使FlowPanel像VerticalPanel一样垂直流动它的子节点?

由于VerticalPanel在标准模式下无法正常工作(http://www.gwtproject.org/doc/latest/DevGuideUiPanels.html),因此Google建议使用FlowPanel替换VerticalPanel .

myflowPanel.getElement().getStyle().setFloat(Float.NONE);
Run Code Online (Sandbox Code Playgroud)

不起作用

那么如何使FlowPanel像VerticalPanel一样垂直流动它的子节点?

gwt uibinder gwtp

5
推荐指数
1
解决办法
7851
查看次数

标签 统计

gwt ×10

uibinder ×10

java ×2

class ×1

css ×1

event-handling ×1

events ×1

gwtp ×1

matching ×1

radio-button ×1