我在我的项目中使用了Vaadin插件SliderPanel(https://vaadin.com/directory#!addon/sliderpanel),并且很难让它消失并重新出现在正确的视图中。当我加载应用程序并登录时,它正确地将我带到正确的类/页面'Dashboard',没有SliderPanel。当我导航到任何其他应该重新显示SliderPanel的类/页面时,它不会按预期显示。为了让我能够展示它,我必须调整窗口大小。当我调整窗口大小然后返回“仪表板”页面时,会发生同样的事情......我必须调整窗口大小,并且SliderPanel选项卡会消失。使用导航器更改视图时,如何让SliderPanel选项卡自动更新?
在我的UI中,我在主类上方注释了 @push()。
@Push()
public class EvoltwebUI extends UI implements ClickListener {...}
在类中我有这些注释和servlet类:
@WebServlet(value = "/*", asyncSupported = true)
@VaadinServletConfiguration(productionMode = false, ui = EvoltwebUI.class, widgetset = "com.evolt.evoltweb.widgetset.EvoltwebWidgetset")
public static class Servlet extends VaadinServlet {
}
我已经注册了这样的观点:
private void registerViews() {
navigator.addView("dashboard", DashboardViewImpl.class);
navigator.addView("groups", GroupsViewImpl.class);
navigator.addView("research", ResearchViewImpl.class);
navigator.addView("reporting", ReportsViewImpl.class);
navigator.addView("execution", AdhocExecView.class);
navigator.addView("tcreview", TestCaseReviewView.class);
navigator.addView("toolbox", ToolboxView.class);
}
每个视图/类的'enter'方法如下所示:
@Override
public void enter(ViewChangeEvent event) {
presenter.onViewEnter(event.getParameters());
generateFields();
ProgressPanel.setViewName("Test Case Review - Please load a group from the Test Group Explorer Slider Panel on the left.");
evoltWebUI.getTreeViewSlider().defaultTab();
}
我尝试过使用这些,但是如果setVisible为false,我会遇到相同类型的问题。 :
leftTreeViewSlider.setVisible(true);
leftTreeViewSlider.setVisible(false);
我也尝试过扩展SliderPanel以访问选项卡的实际大小以缩小它,但是当将其设置回正常大小时,我必须调整窗口大小才能恢复它。
import org.vaadin.sliderpanel.SliderPanel;
import org.vaadin.sliderpanel.SliderPanelBuilder;
import com.vaadin.ui.Component;
public class SliderPanelMod extends SliderPanel{
public SliderPanelMod(SliderPanelBuilder builder) {
super(builder);
}
public void resizeTab(int t) {
this.getState().tabSize = t;
}
public void defaultTab() {
resizeTab(40);
}
}
有没有人有任何想法会导致这个?