GWT的新手......
我正在使用UIBinder方法来布局应用程序,有点像GWT Mail样本的风格。该应用程序以onModuleLoad()方法中添加到RootLayoutPanel的DockLayoutPanel开始。 DockLayoutPanel具有静态North和静态South,使用定义为:
的自定义中心窗口小部件public class BigLayoutWidget extends ResizeComposite {
...
}
此自定义窗口小部件使用BigLayoutWidget.ui.xml进行布局,BigLayoutWidget.ui.xml又包含一个TabLayoutPanel(3个选项卡),其中第一个包含分为WEST(Shortcuts.ui.xml)和CENTER(Workpanel)的SplitLayoutPanel。 ui.xml)。反过来,快捷方式包含一个包含3个堆栈的StackLayoutPanel,每个堆栈都在自己的ui.xml文件中定义。
我希望在快捷方式的单个堆栈中单击事件来更改Workpanel的内容,但到目前为止,我只能在同一个类中操作小部件。使用最简单的情况,我无法在快捷方式中单击按钮以清除Workpanel的内容或使WorkPanel不可见。
一些问题......
请注意,我的布局本身很好;这是从一个ui.xml模块化面板到下一个我无法完成的面板的交互。
提前致谢。
答案 0 :(得分:4)
Composite
id
(对于我使用someWidget.getElement().setId(id)
的小部件,通常与DOM.createUniqueId()
一起使用),您可以通过GWT.get(String id)
获取。然后你会得到一个RootPanel
,你必须把它投射到正确的Widget类 - 你可以看到它可以得到一些'hackish'(如果你用那个id改变Widget的类型怎么办?例外或更糟糕的是,所以我建议坚持使用MVP(参见第一点)并通过消息总线进行通信。但请记住,有时聚合也很好 - 不是所有东西都必须通过消息总线处理:)底线是我建议尽快拥抱MVP(和History) - 它使GWT开发更容易,更简洁:)(我从经验中知道,随着时间的推移代码开始看起来就像一场噩梦,如果你不把它分成演示,观点等等。)