2013-07-16 14 views
6

Lớp ScrollBar trong JavaFX có chứa thuộc tính để thiết lập tăng đơn vị, đó là những gì tôi theo sau - tuy nhiên tôi không thể tìm thấy cách nhận tại ScrollBar này hoặc đặt đơn vị tăng một số cách khác từ lớp ScrollPane! Tôi cho rằng tôi phải thiếu điều gì đó hiển nhiên - làm cách nào để đạt được điều này?Làm cách nào để tôi có thể đặt tăng đơn vị cho một ngăn cuộn trong JavaFX?

+0

Bất kỳ lý do nào cho phiếu giảm giá? – berry120

Trả lời

4

Về mặt kỹ thuật, bạn có thể sử dụng phương pháp .lookup("scrollbar") sau khi da được khởi tạo (nếu thanh cuộn hiển thị). Tôi không thích câu trả lời đó.

Tôi không nghĩ rằng bạn đang bỏ lỡ bất cứ điều gì theo vé JIRA này: https://javafx-jira.kenai.com/browse/RT-16510

tôi khuyến khích bạn để nhảy vào đó, trình bày trường hợp sử dụng của bạn, bỏ phiếu, và xem nếu bạn có thể nhận được một số loại phản ứng trong tương lai.

6

bạn có thể thiết lập ScrollEventListener thành ScrollPane và do đó ghi đè hành vi gốc. Bằng cách này, ví dụ, tôi đã triển khai một ScrollPane cuộn theo chiều ngang thay vì theo chiều dọc. Đây là những gì các phần có liên quan của mã của tôi trông giống như:

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

... 

} 

Để đáp ứng yêu cầu của bạn, bạn chỉ có thể thay đổi dòng mà get/setHvalue được gọi là để có được/setVvalue và sau đó bạn có thể điều chỉnh di chuyển như bạn muốn.

Các vấn đề liên quan