Vaadin: Fenster

Ich versuche, einen sub-Fenster aber entweder die Komponenten, die ich versuchen, es zeigen sich in der "mainwindow" - oder ich bekomme eine java.lang.UnsupportedOperationException. Ich zeige Ihnen, beiden Fällen. Ich würde gerne ein HorizontalLayout in der sub-Fenster, wenn ich brauche, um in einigen realen Komponenten und nicht nur ein Label und ein Button.

public class SubWindow extends CustomComponent {

    Window mainWindow;  //Reference to main window
    Window myWindow;    //The window to be opened

    public SubWindow(Window main) {
        mainWindow = main;
        createWindow();
    }

    public void createWindow() {
        myWindow = new Window("My Dialog");

        HorizontalLayout layout = new HorizontalLayout();

        //Add the window inside the main window. 
        mainWindow.addWindow(myWindow);

        layout.addComponent(new Label("A label"));
        layout.addComponent(new Button("Ok"));

        //The composition root MUST be set
        setCompositionRoot(layout);

        myWindow.addComponent(layout);
    } 
}

Wenn ich diesen starte, und öffnen Sie ein neues Unterfenster mit

window = new Window("Title");
setMainWindow(window);
window.addComponent(new SubWindow(window));

Bekomme ich

SCHWERE Terminal-Fehler:

com.vaadin.event.ListenerMethod$MethodException

Ursache: java.lang.UnsupportedOperationException
bei com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:510)
bei com.vaadin.event.EventRouter.fireEvent(EventRouter.java:164)

...

Verursacht durch: java.lang.UnsupportedOperationException
bei com.vaadin.ui.CustomComponent.removeComponent(CustomComponent.java:248)
bei com.vaadin.ui.AbstractComponentContainer.addComponent(AbstractComponentContainer.java:207)

...

Auf der anderen Seite, wenn ich wechseln zwischen setCompositionRoot(layout) und MeinFenster.addComponent(layout), das Label und den Button am Ende im Hauptfenster anstatt des neu erstellten sub-Fenster.

Was bin ich?

InformationsquelleAutor Dennis S | 2011-06-21
Schreibe einen Kommentar