0

此代码有错误

@Override
public void onClick(ClickEvent event) {
    // TODO Auto-generated method stub
    mainDockPanel.remove(panel1);
    mainDockPanel.remove(panel2);
    if(mainDockPanel.getWidgetDirection(panel1).equals(DockPanel.EAST)){
        mainDockPanel.add(panel1, DockPanel.WEST);
        mainDockPanel.add(panel2, DockPanel.EAST);
    }
    else if (mainDockPanel.getWidgetDirection(panel1).equals(DockPanel.WEST)){
        mainDockPanel.add(panel1, DockPanel.EAST);
        mainDockPanel.add(panel2, DockPanel.WEST);
    }
}

这段代码有问题吗?

另外,还有其他更好的解决方案来交换 2 个面板吗?

4

1 回答 1

1

首先,您从 mainDockPanel 中删除了 panel1。然后你使用if(mainDockPanel.getWidgetDirection(panel1).equals(DockPanel.EAST)){ From the API docs

小部件的布局方向,如果它不是此面板的子面板,则为 null

很有可能,您将获得 NPE

于 2013-04-25T08:50:14.800 回答