当我在Stackpanel之间切换窗口小部件时,是否有任何方法来获取事件? 有点像堆栈面板的openhandler。我必须知道在Stackpanel上打开Widget的索引 。GWT开放事件的Stackpanel处理程序
回答
使用StackLayoutPanel:http://google-web-toolkit.googlecode.com/svn/javadoc/2.0/com/google/gwt/user/client/ui/StackLayoutPanel.html
使用addSelectionHandler()
方法。要获得所选小部件,您可以使用getVisibleIndex()
或getVisibleWidget()
。
myStackPanel.addSelectionHandler(new SelectionHandler<Integer>() {
@Override
public void onSelection(SelectionEvent<Integer> event) {
int selectedWidgetIndex = stackPanel.getVisibleIndex());
//Do stuff with the selectedWidgetIndex
}
});
编辑:这是使用StackLayoutPanel,OP使用StackPanel。它们之间的区别在于StackPanel适用于怪癖模式和StackLayout面板适用于标准模式。我将StackLayoutPanel或任何与Layout相关的小部件作为新的GWT小部件使用它们,就像新的DataGrid一样。
谢谢YOUT,但: - 方法addSelectionHandler(新SelectionHandler
你说得对,我正在检查StackLayoutPanel。如果您没有任何兼容性问题,则可以替换您的StackPanel。 – JoulSauron
您正在使用哪个GWT版本?在GWT 2.4中,StackPanel有'getSelectedIndex()'。 – JoulSauron
您可以在DecoratedStackPanel(也可能是一个StackPanel)添加一个单击处理程序,并使用getSelectedIndex()如下:
myDecoratedStackPanel.addHandler(new ClickHandler()
{
@Override
public void onClick(ClickEvent clickEvent)
{
Window.alert("" + myDecoratedStackPanel.getSelectedIndex());
}
}, ClickEvent.getType());
通过overridding的showStack
方法,它是一件轻而易举的事。尝试像这样:
public class StackPanelX extends StackPanel implements IHasChangeHandler {
String ctx_id=null;
IChangeHandler chandler=null;
public StackPanelX() {
super();
}
public void showStack(int index) {
int currentStack = this.getSelectedIndex();
super.showStack(index);
if (currentStack!=index)
if (chandler!=null)
chandler.onChange(ctx_id, new Variant(index));
}
@Override
public void setChangeHandler(String ctx_id, IChangeHandler handler) {
this.ctx_id=ctx_id;
this.chandler=handler;
}
}
- 1. GWT Grid的DoubleClick事件处理程序
- 2. GWT事件处理程序阻止UI
- 3. GWT - 如何处理同一事件的多个处理程序
- 4. GWT中的事件处理
- 5. GWT事件预览与事件处理程序
- 6. GWT:我做了事件和事件处理程序类吗?
- 7. 释放JavaScript事件处理程序
- 8. 如何释放事件处理程序
- 9. 多个事件处理程序创建重新开放的fancybox
- 10. GWT多个事件处理
- 11. GWT元素事件处理
- 12. GWT处理UIBinder事件
- 13. HTML事件处理程序与React事件处理程序
- 14. 的事件处理程序
- 15. 取消以下处理程序的GWT事件
- 16. GWT反映动态的事件处理程序
- 17. 处理程序不处理事件
- 18. Reactive extensions处理事件处理程序
- 19. KEY_ENTER处理程序RootPanel GWT
- 20. GWT Mvp和处理程序
- 21. C#事件处理程序
- 22. MFC事件处理程序
- 23. MsftDiscFormat2Data事件处理程序
- 24. 事件处理程序
- 25. wpf事件处理程序
- 26. JavaScript事件处理程序
- 27. 事件处理程序TabbedPanel
- 28. DRYing事件处理程序
- 29. 事件处理程序
- 30. Elixir事件处理程序
没有人解决方案? – ph09
以及你的问题不是很清楚,我可以发表一个例子吗? – Stefan
那么,我已经有了一个Stackpanel,它上面有一些Widget。一个小工具已打开。现在我想要一个处理程序在用户打开另一个窗口小部件时注意到我。所以我总是知道Stackpanel的哪个孩子是开放的。知道我的意思吗? – ph09