GXT メニューは、setMenu() メソッドを介して CellButtonBase サブクラスのインスタンスにのみ設定できることがわかりました。ボタンの代わりに画像を表示し、ユーザーがその画像をクリックするとメニューを表示したいと思います。残念ながら、Image は CellButtonBase のサブクラスではないため、GXT メニューをアタッチできません。では、使用する必要がある場合、TextButton (ここではこれが唯一の選択肢のようです) を画像のように見せるにはどうすればよいでしょうか? このテーマに関するドキュメントや例はありません。Sencha GXT フォーラム サポートで質問しましたが、回答がありませんでした。
質問する
1070 次
1 に答える
1
わかりました、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());
}
于 2012-08-07T01:24:34.747 に答える