當我在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