我正在学习设计GWT中的GUI 我有RootPanel,我已经放置了所有的小部件。在GWT中设计gui
在一个面板我已经把树部件在treeItems是在RPC调用的成功加上了selectionHandler
我想要做什么: 当点击treemItem,所有其他treeItem和小部件不应该选择相同和不同的面板。就像正在进行的处理一样,所以没有其他事情可以做。
请提出一些想法或示例代码或示例。
我正在学习设计GWT中的GUI 我有RootPanel,我已经放置了所有的小部件。在GWT中设计gui
在一个面板我已经把树部件在treeItems是在RPC调用的成功加上了selectionHandler
我想要做什么: 当点击treemItem,所有其他treeItem和小部件不应该选择相同和不同的面板。就像正在进行的处理一样,所以没有其他事情可以做。
请提出一些想法或示例代码或示例。
如果我正确理解你,你想禁止用户点击一些小部件,直到特定的回调完成。为了做到这一点,你应该有一个更大的定制面板z-index
和opacity
。例如,像DialogBox
的setGlassEnabled(true)
方法,并尝试在您的回调中使用该技术。当异步请求开始显示面板onSuccess
和onFailure
时,应该隐藏它。顺便说一句,我的gwt有LoadingPanel类实现这种功能。 GWT-Ext的另一个mask现场演示。
这种说法是多余的和不必要的:
“当treemItem点击,所有其他treeItem和 相同,不同的面板部件不应该被选中。”
当然,当你点击一个树节点时,这是你想激活的唯一节点。没有其他节点会有任何活动。这是惯例。
我真的不知道这种说法是怎么一回事:
“就像有一个处理事情所以没有其他的东西被允许 做”
你的问题应该仅仅是:
我如何添加子节点的树部件,其中子节点的增加 只有当我点击节点上?当我点击一个节点时,如果它没有 子节点,则会触发一个RPC来获取节点。我的RPC结果应该如何更新节点?点击一个节点后,应该高亮显示 。整棵树上应该只有一个突出显示/选定的节点。
延长HorizontalPanel以包含图标和标题。 它应该实现IsTreeItem。 它应该实现ClickHandler,以便它可以作为点击处理程序添加到图标和标题标签。
public class Node
extends HorizontalPanel
implements ClickHandler, IsTreeItem{
Image img;
Label label;
MyData data;
TreeItem nodeWrapper;
构造在迈德特记录吃,实例化的图标图像和标题标签,并赞同作为函数clickhandler的图标和标签:
public Node(MyData data){
this.nodeWrapper = new TreeItem(this);
this.img = new Image(data.getIconUrl());
this.label = new Label(data.getTitle());
this.data = data;
this.add(img);
this.add(this.label);
// ensure onclick is triggered either by clicking img or label.
this.img.addClickHandler(this);
this.label.addClickHandler(this);
}
实施IsTreeItem要求节点能够本身证实了TreeItem:
public TreeItem asTreeItem(){
return this.nodeWrapper;
}
的clickhandling将获取的子记录列表,并反复从孩子的记录和创建新节点将它们添加到当前节点。这是RPC回调操作发生的地方。
public void onClick(ClickEvent e){
this.displayRightPanel(this.data);
if(this.nodeWrapper.getChildCount()==0)
fetchNodeData(
this.nodeWrapper,
this.data.getId(),
new AsyncCallBack<List<MyData>>(){
public void onSuccess(List<MyData> nodeDataList){
for(MyData nodeData : nodeDataList){
Node.this.nodeWrapper.addItem(new Node(nodeData));
}
}
public void onFailure(Throwable sorry){
doWhatever();
}
}
);
}
关闭类定义之前定义其他相关方法:
//blah ... blah ... blah...
}
因为这不是在RPC的教程,你应该找出如何写的RPC部分。您需要定义MyData,它是GWT客户端和RPC Servlet之间的共享POJO。 RPC servlet必须返回MyData列表。您至少需要接受第二范式的数据库规范化教育,以了解为什么需要getId()方法。
public Interface MyData{
String getIconURL();
String getTitle();
String getId();
// among others ...
}
推测你有一个splitpanel。左侧是树形部件,右侧是某种显示器。这样的onclick,除了引发RPC取,也叫displayRightPanel(数据),以及你希望怎样显示数据是留给你。
您可以创建第一个根节点,它作为树的根关联,而树的其余部分将通过用户点击来填充。所以根节点会要求你编写一个MyData记录,它将提供iconUrl,标题和一些根数据。
树部件将管理其成员的突出显示,并确保只有一个成员被高亮显示。
你找到一个解决方案?如果不检查GlassPanel对话框菜单http://www.asquare.net/gwttk/apps/demo/Demo.html上 – 2012-02-02 06:10:45