La classe ScrollBar in JavaFX contiene una proprietà per l'impostazione dell'incremento dell'unità, che è quello che sto cercando - tuttavia non riesco a trovare come ottenere a questo ScrollBar, o impostare l'incremento dell'unità in qualche altro modo dalla classe ScrollPane! Presumo che mi manchi qualcosa di ovvio - come faccio a ottenere questo?Come posso impostare l'incremento dell'unità per un riquadro di scorrimento in JavaFX?
risposta
Tecnicamente, dovresti essere in grado di raggiungerlo utilizzando il metodo .lookup("scrollbar")
dopo l'inizializzazione della skin (se la barra di scorrimento è visibile). Non mi piace quella risposta però.
Non credo che ti manca qualche cosa secondo questo biglietto JIRA: https://javafx-jira.kenai.com/browse/RT-16510
l'invitiamo a saltare su questo, presentare il vostro caso d'uso, voto, e vedere se è possibile ottenere una sorta di risposta in futuro.
è possibile impostare ScrollEventListener su ScrollPane e quindi ignorare il comportamento originale. In questo modo, ad esempio, ho implementato un ScrollPane che scorre in orizzontale anziché in verticale. Questo è ciò che la parte rilevante del mio codice è simile:
public class Overview extends ScrollPane {
...
private void setupHorizontalScrolling() {
this.setOnScroll(new EventHandler<ScrollEvent>() {
@Override
public void handle(ScrollEvent scrollEvent) {
double deltaY = scrollEvent.getDeltaY()*2; // *2 to make the scrolling a bit faster
double width = Overview.this.getContent().getBoundsInLocal().getWidth();
double hvalue = Overview.this.getHvalue();
Overview.this.setHvalue(hvalue + -deltaY/width); // deltaY/width to make the scrolling equally fast regardless of the actual width of the component
}
});
}
...
}
per soddisfare i requisiti, si può semplicemente cambiare la linea in cui il get/setHvalue è chiamato a ricevere/setVvalue e quindi è possibile regolare lo scorrimento come te volere.
Qualsiasi motivo per il downvote? – berry120