2016-06-29 6 views
0

Ich versuchte mit NatTableExamples-1.4.0 und versuchte ShowRowInViewportCommand mit _900_test\viewportSelection\ViewportSelectionHideShowDataLayerExample zu verwenden.Verwenden von NatTable ShowRowInViewportCommand

I gespeichert, um die nattable Objekt erhalten von createExampleControl Verfahren und overloaded onStart() Verfahren wie folgt:

@Override 
public void onStart() { 
     nattable.doCommand(new ShowRowInViewportCommand(nattable.getLayer(), 35)); //didn't work 
     nattable.doCommand(new SelectRowsCommand(nattable.getLayer(), 0, 35, false, false)); //worked, can see the row selected after scrolling down 
    } 

Hier SelectRowsCommand gearbeitet. Ich habe gesehen, dass Zeile 36 aufgrund von Index-Position-Transformationen ausgewählt wird.

Aber ich habe den Effekt von ShowRowInViewportCommand in UI nicht gesehen. Ich hatte erwartet, dass die Reihe 36 automatisch gesehen werden sollte.

ShowRowInViewportCommandHandler ist vorhanden. Während des Debugging habe ich überprüft, dass das Steuerelement die ShowRowInViewportCommandHandler.doCommand-Methode erreicht hat.

Was kann ich tun, um das automatische Scrollen zu sehen?

Antwort

0

Sie haben ein Timing-Problem in Ihrem Ansatz. Sie möchten etwas sichtbar machen und zu dieser Position rollen, die noch nicht einmal gerendert wurde. Wie sollte das Scrollen auf etwas ausgeführt werden, das nicht gerendert wird? Die Shell ist geöffnet NACHonStart().

Um das automatische Scrollen beim Start auszuführen, müssen Sie einen Listener implementieren, der nach dem Rendern ausgeführt wird, z. mit einem PaintListener.

this.nattable.addPaintListener(new PaintListener() { 

    @Override 
    public void paintControl(PaintEvent e) { 
     nattable.doCommand(new SelectRowsCommand(nattable, 0, 35, false, false)); 
     nattable.removePaintListener(this); 
    } 
}); 

BTW, Sie brauchen nicht einmal die ShowRowInViewportCommand als SelectRowsCommand automatisch auszuführen, um die ausgewählte Zeile in das Ansichtsfenster bewegt.

+0

Ich habe den obigen Code mit vielen Beispielen verwendet, es funktionierte mit Ausnahme von _513_FreezeExample. Ich verstehe, dass die Schichten unterschiedlich sind. Wie macht man SelectRowsCommand mit _513_FreezeExample? – Apurv