0

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

4

1 に答える 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 に答える