2017-06-30 1 views
0

Je suis en train d'écrire une petite application de chat dans Kotlin avec TornadoFX qui fonctionne jusqu'à présent.
J'essaye actuellement de le rendre plus attrayant visuel en recevant de nouveaux messages.
Les messages sont dans un TableView (expéditeur - message) mais le défilement vers les nouveaux messages n'est pas lisse comme je le voudrais.Le défilement lisse dans JavaFX TableView

L'extrait où je besoin d'aide est relativement courte:

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

En général j'ai besoin d'aide pour déterminer quelle propriété de changer et que l'objectif devrait être dans cette ligne:

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

Répondre

1

Ok , J'ai trouvé la solution. Il faut chercher le ScrollBar le TableView fournit, une fois que suffisamment de lignes sont présentes (et lorsque le défilement fait quelque chose).

De TornadoFX JavaFX Sync Scroll across tableviews, je me suis adapté la recherche et est venu avec cela, travailler, 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) 
    } 
    } 
}