首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GWT样式UiBinder

GWT样式UiBinder
EN

Stack Overflow用户
提问于 2011-07-15 18:16:44
回答 2查看 15K关注 0票数 5

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

代码语言:javascript
复制
<ui:style>
    .onMouseOverBorderColor {border-color: red; border-style: outset}
    .onMouseOutBorderColor {border-color: black; border-style: outset}
</ui:style>

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

代码语言:javascript
复制
    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");
        }

    });

但是..。什么都没发生!我做错了什么?

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

代码语言:javascript
复制
<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> 

和java类:

代码语言:javascript
复制
public UiWidget(String path, String theTitle) {
        initWidget(uiBinder.createAndBindUi(this));
        GWT.log(URL_PREFIX+path);
        myImage.setUrl(URL_PREFIX+path);
        myTitle.setText(theTitle);
        myImage.setSize(IMG_WIDTH, IMG_HEIGHT);
        /*
        clickable.addMouseOverHandler(new MouseOverHandler() {

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

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

            @Override
            public void onMouseOut(MouseOutEvent event) {
                GWT.log("mouse out");
            }
*/
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-15 18:42:38

你不能这样引用css styleName。在您的示例中,<ui:style>中的样式名只能在ui绑定器文件中使用,因为它被GWT混淆了。您应该将样式放在CSSResource中。并将样式放置在css文件中而不是uibinder文件中,并设置css资源样式名而不是普通字符串。

但如果你只想更改一些css,你也可以使用悬停选择器,而不需要任何代码:

代码语言:javascript
复制
<ui:style>
    .border {border-color: black; border-style: outset}
    .border:hover {border-color: red; border-style: outset}
</ui:style>

并将uibinder文件中小部件的边框样式设置为一个属性:styleName="{style.border}"

票数 3
EN

Stack Overflow用户

发布于 2012-06-21 01:23:10

默认情况下,在UiBinder中声明的所有样式都是模糊的。

这意味着你的风格'onMouseOverBorderColor‘可能会变成类似于'GLX0QCICAR’的东西。

但是当你在JAVA代码中这样做的时候:

代码语言:javascript
复制
border.setStyleName("onMouseOverBorderColor");

您的边框元素将真正具有样式'onMouseOverBorderColor‘。

所以2个解决方案:

使用外部不混淆样式名称:

代码语言:javascript
复制
<ui:style>
    @external onMouseOverBorderColor onMouseOutBorderColor;
    .onMouseOverBorderColor {border-color: red; border-style: outset}
    .onMouseOutBorderColor {border-color: black; border-style: outset}
</ui:style>

在您的代码中使用JAVA样式

代码语言:javascript
复制
<ui:style type="your.package.name.UiWidget.MyStyle">
    .onMouseOverBorderColor {border-color: red; border-style: outset}
    .onMouseOutBorderColor {border-color: black; border-style: outset}
</ui:style>

public class UiWidget {
    ...
    public interface MyStyle extends CssResource {
        String onMouseOverBorderColor();
        String onMouseOutBorderColor();
    }

    @UiField
    protected MyStyle style;

    public UiWidget(String path, String theTitle) {
        ...
        clickable.addMouseOverHandler(new MouseOverHandler() {
            @Override
            public void onMouseOver(MouseOverEvent event) {
                border.setStyleName(style.onMouseOverBorderColor);
            }
        });
        ...
    }
}
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6705553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档