gpt4 book ai didi

GWT:UiBinder 中的菜单

转载 作者:行者123 更新时间:2023-12-01 22:05:02 27 4
gpt4 key购买 nike

我想通过 GWT 2.0 中的 UiBinder 使用声明性方法来实现菜单(MenuBarMenuItem)。

我遇到了两个问题:

  1. 有没有办法在 .ui.xml 文件中添加 MenuItemSeparators?所以到目前为止,我只设法将 MenuBar- 和 MenuItem-tags 放入文件。

  2. 使用@UiHandler,GWT 编写事件的样板代码我的处理程序。对于菜单,我需要编写命令。我怎么样应该使用 UiBinder 方法来做到这一点吗?有命令吗标签要放入 .ui.xml 文件中吗?我必须写样板吗我自己编写命令处理程序的代码?

感谢您思考这些问题!

最佳答案

我同意,如果您尝试放入 MenuItemSeparator ,当 GWT 尝试创建小部件时,它会提示只有 MenuItem 可以是子项。由于目前尚不支持此功能,因此我建议您请求将此作为 GWT 团队 future 的增强功能。

同时,您可以通过编程方式添加分隔符并按以下方式添加命令:XML 文件:

<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" xmlns:g="urn:import:com.google.gwt.user.client.ui">
<g:HTMLPanel>
<g:MenuBar ui:field="menuBar">
<g:MenuItem ui:field="helpMenuItem">Help</g:MenuItem>
<g:MenuItem ui:field="aboutMenuItem">About</g:MenuItem>
<g:MenuItem ui:field="siteMapMenuItem">Site Map</g:MenuItem>
</g:MenuBar>
</g:HTMLPanel>

Java 文件:

public class Menu extends Composite {
...
@UiField MenuBar menuBar;
@UiField MenuItem helpMenuItem;
...
public Menu() {
initWidget(uiBinder.createAndBindUi(this));
// insert a separator
menuBar.insertSeparator(1);
// attach commands to a menu item
helpMenuItem.setCommand(new MenuCommand(HistoryToken.Help));
...
}

public class MenuCommand implements Command {
final HistoryToken historyToken;

public MenuCommand(HistoryToken historyToken) {
this.historyToken = historyToken;
}

@Override
public void execute() {
historyToken.fire();
}
}

public enum HistoryToken {
Help,About,SiteMap;

public void fire(){
History.newItem(this.toString());
}
}


在代码的其他地方,我实现了一个 HistoryListener 来捕获任何更改,即

class HistoryManager implements ValueChangeHandler<String> {
// 1. get token
// 2. change it into a HistoryToken
// 3. perform switch statement
// 4. change contents based upon HistoryToken found
...
}

关于GWT:UiBinder 中的菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2107740/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com