在vaadin的扩展视图中添加其他内容
如果我制作了navigator并在其中添加了视图:在vaadin的扩展视图中添加其他内容,vaadin,Vaadin,如果我制作了navigator并在其中添加了视图: n = new navigator(.....); 并创建两个视图,其中view2扩展了view1 做另外一件事: n.addView("view1", View1.class); n.addView("view2", View2.class); 如何在view2中添加其他组件,如标签、表格或垂直布局等?答案在Vaadin Book中: 但我在这里也强调了一些代码部分: 导航设置 public class MyUI extends UI {
n = new navigator(.....);
并创建两个视图,其中view2扩展了view1
做另外一件事:
n.addView("view1", View1.class);
n.addView("view2", View2.class);
如何在view2中添加其他组件,如标签、表格或垂直布局等?答案在Vaadin Book中: 但我在这里也强调了一些代码部分: 导航设置
public class MyUI extends UI {
@Override
protected void init(VaadinRequest request) {
// Create a navigator to control the views
navigator = new Navigator(this, this);
// Create and register the views
navigator.addView("", new StartView());
navigator.addView(MAINVIEW, new MainView());
}
实现视图
“视图可以是实现视图界面的任何对象。”
代码来自瓦丁的书
请注意,该视图是常规类。它有一个特殊的方法entry()
,在每个视图条目之后调用。您可以在类构造函数中创建的所有组件、布局等(例如,在上面的示例中:addComponent(button)
)
如果您想导航到任何已注册的视图(通过调用方法addView(“viewName”),…)
和视图名注册),只需调用navigateTo(“viewName”)
。您可以通过两种方式获得导航器:
getUI().getNavigator().navigateTo("viewName");
或
我希望这是可以理解的
编辑:
考虑一个简单的例子:
public class View1 extends VerticalLayout implements View {
protected Label hello = new Label("Hello");
private Button button = new Button("Click me");
public View1() {
addComponent(hello);
addComponent(button);
}
public Button getButton() {
return button;
}
}
public class View2 extends View1 {
private Button button2 = new Button("Don't click me");
public View2() {
hello.setValue("Hello world");
getButton().setIcon(...);
addComponent(button2);
}
}
不幸的是,现在我不能测试任何代码,所以上面的代码只是一个想法
这就是你需要的吗?或者我误解了您的问题?是的,这是可以理解的,但我将view2设置为类view1:)的扩展类。我试图在第二个视图(view2)中添加示例标签,它实际上扩展了view1之外的类。类似于:公共类view2扩展view1{……}Ok。抱歉,但我仍然认为您可以在
view2()
构造函数中执行此操作。但是,如果view1
的所有内容都是私有的,这可能是不可能的(或非常困难的)。但是,如果您遵循Vaadin Book示例并使view1
扩展布局(例如VerticalLayout
),那么您甚至可以在view2()
构造函数或removeComponent(组件c)
中调用removeAllComponents
。您仍然可以使view1
protectedscope的某些组件保留在视图中,即使我们删除了(组件c)?实际上,我希望在页面的内容中添加一个或两个组件!我添加了一个非常简单的例子来说明我所说的。
UI.getCurrent().getNavigator().navigateTo("viewName");
public class View1 extends VerticalLayout implements View {
protected Label hello = new Label("Hello");
private Button button = new Button("Click me");
public View1() {
addComponent(hello);
addComponent(button);
}
public Button getButton() {
return button;
}
}
public class View2 extends View1 {
private Button button2 = new Button("Don't click me");
public View2() {
hello.setValue("Hello world");
getButton().setIcon(...);
addComponent(button2);
}
}