我正在使用PNG图标创建一个图片按钮,我需要让它具有按钮的感觉(但不是按下按钮的效果),只要用户点击图像,就会出现一个虚线框(类似选择框)以产生按钮被点击的效果。有什么想法吗?
我正在使用PNG图标创建一个图片按钮,我需要让它具有按钮的感觉(但不是按下按钮的效果),只要用户点击图像,就会出现一个虚线框(类似选择框)以产生按钮被点击的效果。有什么想法吗?
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/
你可以创建自己的小部件,我有这个
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);
}
}
ToggleButton与CSS样式相配。
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 */
}
你能在 ClickEvent 处理程序中为元素添加样式表吗?(addStyleDependentName)。
或者,也许 PushButton 会有用?
我创建了一个简单的自定义小部件类,它使用CSS和事件来显示自定义按钮:
活动: view.getContent().add(new ImageButton(resource.comment(), resource.search(), resource.chechCircle(), new ClickCallback() { public void onClick() { Window.alert("Clicked!"); } }));
我使用 UiBinder/Composite 来控制布局、css 和事件。"ClickCallback" 只是一个带有一个 onClick 方法的自定义接口。
UiBinder 文件在这里: http://www.acrinta.com/ImageButton.zip
CSS 在悬停时显示边框,MouseOverMouseOut 可以交换图像,与 onClick 相同,它会在瞬间更改图像,可能会给出一些想法。