2012-08-06 60 views
0

我看到GXT菜单只能通过setMenu()方法在CellButtonBase子类的实例上设置。 我想显示一个图像而不是一个按钮,并在用户单击该图像时显示一个菜单。不幸的是,图像不是CellButtonBase的子类,因此我无法附加GXT菜单。 所以如何使TextButton(这似乎是我唯一的选择)看起来像一个图像,如果我必须使用它? 没有关于此主题的文档或示例。我问Sencha GXT论坛支持,但没有得到任何回应。风格的GXT菜单按钮

回答

0

好吧,我找到了一种不使用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()); 
    }