2013-07-16 4 views
6

Die ScrollBar Klasse in JavaFX enthält eine Eigenschaft für die Einstellung des Einheiteninkrements, nach der ich mich sehne - aber ich kann nicht herausfinden, wie man diese ScrollBar erreicht, oder die Einheitsinkremente etwas anders aus der ScrollPane Klasse setzen! Ich nehme an, ich muss etwas Offensichtliches vermissen - wie erreiche ich das?Wie kann ich das Einheitsinkrement für einen Bildlaufbereich in JavaFX festlegen?

+0

Irgendwelche Gründe für den Downvote? – berry120

Antwort

4

Technisch gesehen, sollten Sie nach der Skin-Initialisierung mit der Methode .lookup("scrollbar") darauf zugreifen können (wenn die Bildlaufleiste sichtbar ist). Ich mag diese Antwort nicht.

Ich glaube nicht, dass du etwas nach dieser JIRA-Ticket sind vermisst: https://javafx-jira.kenai.com/browse/RT-16510

Ich würde Sie ermutigen, das zu springen, präsentieren Sie Ihre Use Case, Abstimmung, und sehen, ob Sie irgendeine Art bekommen der Antwort in der Zukunft.

6

Sie können einen ScrollEventListener für ScrollPane einrichten und somit das ursprüngliche Verhalten überschreiben. So habe ich beispielsweise eine ScrollPane implementiert, die horizontal statt vertikal scrollt. Dies ist, was der relevante Teil meines Code wie folgt aussieht:

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 
     } 
    }); 
    } 

... 

} 

Ihre Anforderung gerecht zu werden, kann man einfach die Zeile, wo die get/setHvalue genannt wird, erhalten/setVvalue und dann können Sie das Scrollen wie Sie einstellen wollen.