GWT MenuBar组件

GWT MenuBar组件 介绍

MenuBar组件代表标准的菜单栏小工具。菜单栏可以包含任意数量的菜单项,每个菜单项可以触发命令或打开级联菜单栏。

GWT Tree组件 声明

以下是com.google.gwt.user.client.ui.MenuBar类的声明

public class MenuBar
   extends Widget
      implements PopupListener, HasAnimation, 
	     HasCloseHandlers<PopupPanel>

CSS 样式规则

以下默认 CSS 样式规则将应用于所有MenuBar标签。您可以根据您的要求覆盖它。

.gwt-MenuBar {}

.gwt-MenuBar-horizontal {}

.gwt-MenuBar-vertical{}

.gwt-MenuBar .gwt-MenuItem {}

.gwt-MenuBar .gwt-MenuItem-selected {}

.gwt-MenuBar .gwt-MenuItemSeparator {}

.gwt-MenuBar .gwt-MenuItemSeparator .menuSeparatorInner {}

.gwt-MenuBarPopup .menuPopupTopLeft {}

.gwt-MenuBarPopup .menuPopupTopLeftInner {}

.gwt-MenuBarPopup .menuPopupTopCenter {}

.gwt-MenuBarPopup .menuPopupTopCenterInner {}

.gwt-MenuBarPopup .menuPopupTopRight {}

.gwt-MenuBarPopup .menuPopupTopRightInner {}

.gwt-MenuBarPopup .menuPopupMiddleLeft {}

.gwt-MenuBarPopup .menuPopupMiddleLeftInner {}

.gwt-MenuBarPopup .menuPopupMiddleCenter {}

.gwt-MenuBarPopup .menuPopupMiddleCenterInner {}

.gwt-MenuBarPopup .menuPopupMiddleRight {}

.gwt-MenuBarPopup .menuPopupMiddleRightInner {}

.gwt-MenuBarPopup .menuPopupBottomLeft {}

.gwt-MenuBarPopup .menuPopupBottomLeftInner {}

.gwt-MenuBarPopup .menuPopupBottomCenter {}

.gwt-MenuBarPopup .menuPopupBottomCenterInner {}

.gwt-MenuBarPopup .menuPopupBottomRight {}

.gwt-MenuBarPopup .menuPopupBottomRightInner {}

GWT MenuBar组件 构造方法

构造方法 描述
MenuBar() 创建一个空的水平菜单栏。
MenuBar(boolean vertical) 创建一个空的菜单栏。
MenuBar(boolean vertical, MenuBar.MenuBarImages images) 已弃用。替换为 MenuBar(boolean, Resources)
MenuBar(boolean vertical, MenuBar.Resources resources) 创建一个空的菜单栏,它使用指定的 ClientBundle 作为菜单图像。
MenuBar(MenuBar.MenuBarImages images) 已弃用。由 MenuBar(Resources) 取代
MenuBar(MenuBar.Resources resources) 创建一个空的水平菜单栏,将指定的 ClientBundle 用于菜单图像。

GWT MenuBar组件 方法

方法 描述
HandlerRegistration addCloseHandler(CloseHandler<PopupPanel> handler) 添加 CloseEvent 处理程序。
MenuItem addItem(MenuItem item) 将菜单项添加到栏。
MenuItem addItem(SafeHtml html, Command cmd) 将一个菜单项添加到包含 SafeHtml 的栏中,当它被选中时将触发给定的命令。
MenuItem addItem(SafeHtml html, MenuBar popup) 将菜单项添加到栏,当它被选中时将打开指定的菜单。
MenuItem addItem(java.lang.String text, boolean asHTML, Command cmd) 向栏添加一个菜单项,当它被选中时将触发给定的命令。
MenuItem addItem(java.lang.String text, boolean asHTML, MenuBar popup) 将菜单项添加到栏,当它被选中时将打开指定的菜单。
MenuItem addItem(java.lang.String text, Command cmd) 向栏添加一个菜单项,当它被选中时将触发给定的命令。
MenuItem addItem(java.lang.String text, MenuBar popup) 将菜单项添加到栏,当它被选中时将打开指定的菜单。
MenuItemSeparator addSeparator() 向 MenuBar 添加一条细线以分隔 MenuItem 的各个部分。
MenuItemSeparator addSeparator(MenuItemSeparator separator) 向 MenuBar 添加一条细线以分隔 MenuItem 的各个部分。
void clearItems() 从此菜单栏中删除所有菜单项。
void closeAllChildren(boolean focus) 关闭此菜单和所有子菜单弹出窗口。
jvoid focus() 给这个 MenuBar 焦点。
boolean getAutoOpen() 获取当鼠标移到该菜单栏上时是否会打开该菜单栏的子菜单。
int getItemIndex(MenuItem item) 获取 MenuItem 的索引。
protected java.util.List getItems() 返回包含菜单栏中 MenuItem 对象的列表。
protected MenuItem getSelectedItem() 返回用户当前选择(突出显示)的 MenuItem。
int getSeparatorIndex(MenuItemSeparator item) 获取 MenuItemSeparator 的索引。
MenuItem insertItem(MenuItem item, int beforeIndex) 将菜单项添加到特定索引处的栏。
MenuItemSeparator insertSeparator(int beforeIndex) 向 MenuBar 添加一条细线,以分隔指定索引处的 MenuItem 部分。
MenuItemSeparator insertSeparator(MenuItemSeparator separator, int beforeIndex) 向 MenuBar 添加一条细线,以分隔指定索引处的 MenuItem 部分。
boolean isAnimationEnabled() 如果启用动画,则返回 true,否则返回 false。
boolean isFocusOnHoverEnabled() 当鼠标悬停在它上面时,检查这个小部件是否会窃取键盘焦点。
void moveSelectionDown() 将菜单选择向下移动到下一项。
void moveSelectionUp() 将菜单选择向上移动到上一项。
void onBrowserEvent(Event event) 每当接收到浏览器事件时触发。
protected void onDetach() 当小部件从浏览器的文档中分离时调用此方法。
protected void onEnsureDebugId(java.lang.String baseID) 受影响的元素: -item# = 指定索引处的 MenuItem。
void onPopupClosed(PopupPanel sender, boolean autoClosed) 已弃用。改用 addCloseHandler(CloseHandler)
void removeItem(MenuItem item) 从栏中删除指定的菜单项。
void removeSeparator(MenuItemSeparator separator) 从栏中移除指定的 MenuItemSeparator。
void selectItem(MenuItem item) 选择给定的 MenuItem,它必须是此 MenuBar 的直接子项。
void setAnimationEnabled(boolean enable) 启用或禁用动画。
void setAutoOpen(boolean autoOpen) 设置当鼠标移到该菜单栏上时是否打开该菜单栏的子菜单。
void setFocusOnHoverEnabled(boolean enabled) 当鼠标悬停在 MenuBar 上时启用或禁用自动聚焦。

GWT MenuBar组件 示例

1)修改HelloWorld.gwt.xml

<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.8.0//EN"
        "http://gwtproject.org/doctype/2.8.0/gwt-module.dtd">
<module rename-to="HelloWorld">

    <!-- Inherit the core Web Toolkit stuff.                  -->
    <inherits name='com.google.gwt.user.User'/>

    <!-- Specify the app entry point class.                   -->
    <entry-point class='com.yiidian.helloWorld.client.HelloWorld'/>


    <!-- Specify the app servlets.                   -->
    <servlet path='/HelloWorldService' class='com.yiidian.helloWorld.server.HelloWorldServiceImpl'/>

    <source path = 'client'/>
    <source path = 'shared'/>
</module>

2)修改HelloWorld.css

body {
    text-align: center;
    font-family: verdana, sans-serif;
}

h1 {
    font-size: 2em;
    font-weight: bold;
    color: #777777;
    margin: 40px 0px 70px;
    text-align: center;
}

.gwt-MenuBar {
    cursor: default;
}

.gwt-MenuBar .gwt-MenuItem {
    cursor: default;
    font-family: Arial Unicode MS, Arial, sans-serif;
    font-size: 12px;
}

.gwt-MenuBar .gwt-MenuItem-selected {
    background: #E3E8F3;
}

.gwt-MenuBar-horizontal {
    background: #e3e8f3 url(images/hborder.png) repeat-x 0px -2003px;
    border: 1px solid #e0e0e0;
}

.gwt-MenuBar-horizontal .gwt-MenuItem {
    padding: 5px 10px;
    vertical-align: bottom;
    color: #000;
    font-weight: bold;
}

.gwt-MenuBar-horizontal .gwt-MenuItemSeparator {
    width: 1px;
    padding: 0px;
    margin: 0px;
    border: 0px;
    border-left: 1px solid #ccc;
    background: white;
}

.gwt-MenuBar-horizontal .gwt-MenuItemSeparator .menuSeparatorInner {
    width: 1px;
    height: 1px;
    background: white;
}

.gwt-MenuBar-vertical {
    margin-top: 0px;
    margin-left: 0px;
    background: white;
}

.gwt-MenuBar-vertical table {
    border-collapse: collapse;
}

.gwt-MenuBar-vertical .gwt-MenuItem {
    padding: 2px 40px 2px 1px;
}

.gwt-MenuBar-vertical .gwt-MenuItemSeparator {
    padding: 2px 0px;
}

.gwt-MenuBar-vertical .gwt-MenuItemSeparator .menuSeparatorInner {
    height: 1px;
    padding: 0px;
    border: 0px;
    border-top: 1px solid #ccc;
    overflow: hidden;
}

.gwt-MenuBar-vertical .subMenuIcon {
    padding-right: 4px;
}

.gwt-MenuBar-vertical .subMenuIcon-selected {
    background: #E3E8F3;
}

.gwt-MenuBarPopup {
    margin: 0px 0px 0px 3px;
}

.gwt-MenuBarPopup .menuPopupTopLeftInner {
    width: 5px;
    height: 5px;
    zoom: 1;
}

.gwt-MenuBarPopup .menuPopupTopRightInner {
    width: 8px;
    height: 5px;
    zoom: 1;
}

.gwt-MenuBarPopup .menuPopupBottomLeftInner {
    width: 5px;
    height: 8px;
    zoom: 1;
}

.gwt-MenuBarPopup .menuPopupBottomRightInner {
    width: 8px;
    height: 8px;
    zoom: 1;
}

.gwt-MenuBarPopup .menuPopupTopLeft {
    background: url(images/corner.png) no-repeat 0px -36px;
    -background: url(images/corner_ie6.png) no-repeat 0px -36px;
}

.gwt-MenuBarPopup .menuPopupTopRight {
    background: url(images/corner.png) no-repeat -5px -36px;
    -background: url(images/corner_ie6.png) no-repeat -5px -36px;
}

.gwt-MenuBarPopup .menuPopupBottomLeft {
    background: url(images/corner.png) no-repeat 0px -41px;
    -background: url(images/corner_ie6.png) no-repeat 0px -41px;
}

.gwt-MenuBarPopup .menuPopupBottomRight {
    background: url(images/corner.png) no-repeat -5px -41px;
    -background: url(images/corner_ie6.png) no-repeat -5px -41px;
}

html > body .gwt-MenuBarPopup {
}

* html .gwt-MenuBarPopup .menuPopupTopLeftInner {
    width: 5px;
    height: 5px;
    overflow: hidden;
}

* html .gwt-MenuBarPopup .menuPopupTopRightInner {
    width: 8px;
    height: 5px;
    overflow: hidden;
}

* html .gwt-MenuBarPopup .menuPopupBottomLeftInner {
    width: 5px;
    height: 8px;
    overflow: hidden;
}

* html .gwt-MenuBarPopup .menuPopupBottomRightInner {
    width: 8px;
    height: 8px;
    overflow: hidden;
}

3)修改HelloWorld.html

<html>
<head>
    <title>yiidian.com-GWT Hello World</title>
    <link type="text/css" rel="stylesheet" href="HelloWorld.css">
    <script type="text/javascript" language="javascript" src="HelloWorld/HelloWorld.nocache.js"></script>
</head>
<body>
<h1>MenuBar Widget Demonstration</h1>
<div id = "gwtContainer"></div>
</body>
</html>

4)HelloWorld.java

package com.yiidian.helloWorld.client;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.event.logical.shared.SelectionEvent;
import com.google.gwt.event.logical.shared.SelectionHandler;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.*;

/**
 * Entry point classes define <code>onModuleLoad()</code>
 */
public class HelloWorld implements EntryPoint {
    private void showSelectedMenuItem(String menuItemName){
        Window.alert("Menu item: "+menuItemName+" selected");
    }

    public void onModuleLoad() {

        // Create a menu bar
        MenuBar menu = new MenuBar();
        menu.setAutoOpen(true);
        menu.setWidth("100px");
        menu.setAnimationEnabled(true);

        // Create the file menu
        MenuBar fileMenu = new MenuBar(true);
        fileMenu.setAnimationEnabled(true);

        fileMenu.addItem("New", new Command() {
            @Override
            public void execute() {
                showSelectedMenuItem("New");
            }
        });

        fileMenu.addItem("Open", new Command() {
            @Override
            public void execute() {
                showSelectedMenuItem("Open");
            }
        });

        fileMenu.addSeparator();
        fileMenu.addItem("Exit", new Command() {
            @Override
            public void execute() {
                showSelectedMenuItem("Exit");
            }
        });

        // Create the edit menu
        MenuBar editMenu = new MenuBar(true);
        editMenu.setAnimationEnabled(true);

        editMenu.addItem("Undo", new Command() {
            @Override
            public void execute() {
                showSelectedMenuItem("Undo");
            }
        });

        editMenu.addItem("Redo", new Command() {
            @Override
            public void execute() {
                showSelectedMenuItem("Redo");
            }
        });

        editMenu.addItem("Cut", new Command() {
            @Override
            public void execute() {
                showSelectedMenuItem("Cut");
            }
        });

        editMenu.addItem("Copy", new Command() {
            @Override
            public void execute() {
                showSelectedMenuItem("Copy");
            }
        });

        editMenu.addItem("Paste", new Command() {
            @Override
            public void execute() {
                showSelectedMenuItem("Paste");
            }
        });

        menu.addItem(new MenuItem("File", fileMenu));
        menu.addSeparator();
        menu.addItem(new MenuItem("Edit", editMenu));

        //add the menu to the root panel
        RootPanel.get("gwtContainer").add(menu);
    }
}

运行应用程序,显示结果如下:

在菜单栏中选择任何值,将弹出一条显示所选值的警报消息。

热门文章

优秀文章