2017-06-30 6 views
0

Ich schreibe eine kleine Chat-Anwendung in Kotlin mit TornadoFX, die so weit funktioniert.
Ich versuche derzeit, es optisch attraktiver zu machen, wenn neue Nachrichten empfangen werden.
Die Nachrichten sind in einer TableView (Absender - Nachricht), aber Scrollen zu neuen Nachrichten ist nicht glatt, wie ich möchte.Smooth Scrolling in JavaFX TableView

Das Snippet, wo ich Hilfe brauchen, ist relativ kurz:

addEventHandler(ScrollToEvent.ANY) { 
    it.consume() 
    timeline { 
    val keyValue = KeyValue(/* property to change */, /* target value */, Interpolator.EASE_OUT) 
    keyframe(0.25.seconds) { 
     this.plusAssign(keyValue) 
    } 
    } 
} 

Im Allgemeinen muss ich welche Eigenschaft helfen, herauszufinden, zu ändern und was das Ziel sollte in dieser Linie:

KeyValue(/* property to change */, /* target value */, Interpolator.EASE_OUT) 

Antwort

1

Ok Ich habe die Lösung gefunden. Man muss die ScrollBar der TableView nachsehen, sobald genügend Zeilen vorhanden sind (und beim Scrollen eigentlich gar nichts tut).

Von TornadoFX JavaFX Sync Scroll across tableviews, angepasst ich die Suche und kam mit diesem, arbeiten, Code:

addEventHandler(ScrollToEvent.ANY) { 
    it.consume() 
    timeline { 
    val scrollBar = lookupAll(".scroll-bar").first() as ScrollBar 
    val keyValue = KeyValue(scrollBar.valueProperty(), scrollBar.max, Interpolator.EASE_OUT) 
    keyframe(0.5.seconds) { 
     this.plusAssign(keyValue) 
    } 
    } 
}