GWT图像按钮

时间:2011-06-30 20:10:08

标签: gwt

我正在从PNG图标创建一个图像按钮,我需要感觉按钮(但不是按钮效果)只是当用户点击图像时,会出现一个虚线方块(如选择),以便产生效果单击按钮。有什么想法吗?

5 个答案:

答案 0 :(得分:5)

GWT中有这样的事情:

Hyperlink link = new Hyperlink();
Image image = new Image(imageUrl);
...
link.getElement().appendChild(image.getElement());
link.setStyleName("imgBtnLink");

添加/设置CSS样式:

.imgBtnLink:active {
   border-style:dashed;
}

旧的JSFiddle示例: http://jsfiddle.net/Wsaf5/

答案 1 :(得分:1)

你可以创建自己的Widget,我有这个

public class ImageButton extends Button {

    public ImageButton() {
        super();
    }

    public void setImgSrc(String imgSrc) {
        Image img = new Image(imgSrc);
        String definedStyles = img.getElement().getAttribute("style");
        img.getElement().setAttribute("style",definedStyles);
        img.getElement().getStyle().setVerticalAlign(VerticalAlign.MIDDLE);
        DOM.insertBefore(getElement(), img.getElement(), DOM.getFirstChild(getElement()));
    }

    @Override
    public void setText(String text) {
        Element span = DOM.createElement("span");
        span.setInnerText(text);

        span.getStyle().setPaddingLeft(5, Unit.PX);
        span.getStyle().setPaddingRight(3, Unit.PX);
        span.getStyle().setVerticalAlign(VerticalAlign.MIDDLE);
        span.getStyle().setColor("black");

        span.setAttribute("class", "arial12R6D6D6D");
        DOM.insertChild(getElement(), span, 0);
    }
}

答案 2 :(得分:1)

使用CSS样式的

ToggleButton是合适的。

ToggleButton button = new ToggleButton();
button.setStyleName("toggle-button");
...

CSS:

.toggle-button {
    outline: none;
    border: none;
    margin: 3px; /* border size */
    background: transparent url(../img/toggle-button.jpg);
}

.toggle-button-down, .toogle-button-down-hovering {
    margin: 0;
    border: 3px #469 dashed; /* margin size */
}

答案 3 :(得分:0)

您可以在Click事件处理程序中为元素添加样式表吗? (添加样式依赖名称)。

或者,也许PushButton可能有用吗?

答案 4 :(得分:0)

我创建了一个简单的自定义窗口小部件类,它使用CSS和事件来显示自定义按钮:

活性:     view.getContent()。add(new ImageButton(resource.comment(),resource.search(),resource.chechCircle(),new ClickCallback(){     public void onClick(){             Window.alert( “被点击!”);           }         }));

我使用UiBinder / Composite来控制布局和css和事件。 “ClickCallback”只是一个带有一个onClick方法的自定义界面

UiBinder文件在这里: http://www.acrinta.com/ImageButton.zip

Css在悬停时显示边框,MouseOverMouseOut可以与onClick交换相同的图像,在那里它会瞬间更改图像。可能会提出一些想法