我看到GXT菜单只能通过setMenu()方法在CellButtonBase子类的实例上设置。我想要显示一个图像而不是按钮,并在用户单击该图像时显示一个菜单。不幸的是,Image不是CellButtonBase的子类,因此我不能将GXT菜单附加到它。那么,如果我必须使用TextButton (这似乎是我唯一的选择),我如何才能使它看起来像一个图像?没有关于这个主题的文档或示例。我在Sencha GXT论坛上请求支持,但没有得到任何回应。
发布于 2012-08-07 09:24:35
好了,我找到了一种不用TextButton就能做到的方法。添加图像并调用menu.show(...)在单击处理程序中。
private void createMenu() {
menu = new Menu();
Image menuButtonImage = new Image(Resources.INSTANCE.nav_preferences());
menuButtonImage.addStyleName(CSS.header_bar_icon());
menuButtonImage.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
menu.showAt(getAbsoluteLeft(), getAbsoluteTop() + MENU_OFFSET_FROM_IMAGE_TOP);
}
});
menu.addShowHandler(new ShowEvent.ShowHandler() {
@Override
public void onShow(ShowEvent event) {
highlight();
}
});
menu.addHideHandler(new HideEvent.HideHandler() {
@Override
public void onHide(HideEvent event) {
removeHighlight();
}
});
menu.setStyleName(CSS.menu());
add(menuButtonImage);
}
private void addUserSettings() {
MenuItem userSettingsItem = new MenuItem("User Settings");
userSettingsItem.addSelectionHandler(new SelectionHandler<Item>() {
@Override
public void onSelection(SelectionEvent<Item> event) {
_coreLayout.showUserSettingsPage();
}
});
userSettingsItem.setStyleName(CSS.menu_item());
menu.add(userSettingsItem);
}
private void highlight() {
addStyleName(CSS.header_bar_icon_box_selected());
}
private void removeHighlight() {
removeStyleName(CSS.header_bar_icon_box_selected());
}https://stackoverflow.com/questions/11837390
复制相似问题