gpt4 book ai didi

java - 如何替换 GWT 中 DockLayoutPanel 的中心面板?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:50:09 26 4
gpt4 key购买 nike

我从 EntryPoint 类加载自定义构建的 westPanel。我想从这个 WestPanel 替换我的 EntryPoint 类中出现的 DockLayoutPanel 的中心。

这是我的 EntryPoint 类:

public class MainEntryPoint implements EntryPoint {
private VerticalPanel mainPanel = new VerticalPanel();
private DockLayoutPanel dockLayoutPanel = new DockLayoutPanel(Unit.EM);
private NorthMenu northMenu = new NorthMenu();
private VerticalPanel mainPanel = new VerticalPanel();
//other panels

@Override
public void onModuleLoad() {
dockLayoutPanel.addNorth(northMenu, 40);
dockLayoutPanel.add(mainPanel);
//add other panels
RootLayoutPanel panel = RootLayoutPanel.get();
panel.add(dockLayoutPanel);
}
}

WestPanel 应该用 MyOtherPanel 替换 DockLayout 的 mainPanel:

public class WestMenu extends Composite {
private StackLayoutPanel stackLayoutPanel = new StackLayoutPanel(Unit.EM);
public WestMenu(){
Tree configuration = new Tree();
configuration.addSelectionHandler( new SelectionHandler(){
@Override
public void onSelection(SelectionEvent event) {
MyOtherPanel builderPanel = new MyOtherPanel();
RootLayoutPanel panel = RootLayoutPanel.get();
DockLayoutPanel dlp = (DockLayoutPanel)panel.getWidget(0);
dlp.add(builderPanel);
}
});
//other init configurations
initWidget(stackLayoutPanel);
}
}

我不断收到异常,说我无法替换它。替换/更改 DockLayoutPanel 的中心面板的最佳方法是什么?

谢谢。

最佳答案

您需要显式移除中心(请参阅 DockLayoutPanel 中 protected insert 方法的 javadoc):

dlp.remove(currentCenterPanel);

但这对开发人员来说不是很友好,因为您需要跟踪中心小部件并始终确保在添加之前调用删除。我不知道他们为什么要这样做。

另一种解决方案可能是简单地将 SimpleLayoutPanel 作为中心小部件,并通过 setWidget 在此面板上设置您自己的中心小部件。这样您就不必执行删除操作。

后一种技术还可以通过将 SimpleLayoutPanel 设置为 ActivityManager.setDiplay(...) 中的显示来将实现与 ActivityManager 结合起来。由于您的实现看起来像是应用程序的主要内容,因此 ActiviyManager 在这里可能会有用。

关于java - 如何替换 GWT 中 DockLayoutPanel 的中心面板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7672629/

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