2012-10-01 3 views
3

표준에 따라 ScrollPane에 포함 된 ScrollBar 구성 요소에 대한 정보를 얻으려고합니다. 특히 나는 Scrollbarheight을 읽는 데 관심이 있습니다. 어떻게 참조 할 수 있습니까?ScrollPars의 Scrollbars에 액세스하는 방법

+0

수평 스크롤 막대가 사용하는 수직 픽셀 수나 배치 위치 또는 무엇을보고 싶습니까? –

+2

ScrollBar 높이가 얼마나 많은 세로 픽셀이 필요한지보고 싶습니다. – dajood

답변

6

Node 클래스의 lookupAll() 메서드를 사용하여 스크롤 막대를 찾을 수 있다고 생각합니다. 예를 들어 http://docs.oracle.com/javafx/2/api/javafx/scene/Node.html#lookupAll(java.lang.String)

:

package com.test; 

import java.util.Set; 
import javafx.application.Application; 
import javafx.geometry.Orientation; 
import javafx.scene.Node; 
import javafx.scene.Scene; 
import javafx.scene.control.ScrollBar; 
import javafx.scene.control.ScrollPane; 
import javafx.scene.control.ScrollPaneBuilder; 
import javafx.scene.text.Text; 
import javafx.scene.text.TextBuilder; 
import javafx.stage.Stage; 

public class JavaFxScrollPaneTest extends Application { 

    public static void main(String[] args) { 
     launch(args); 
    } 

    @Override 
    public void start(Stage primaryStage) { 
     String longString = "The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog."; 
     Text longText = TextBuilder.create().text(longString).build(); 

     ScrollPane scrollPane = ScrollPaneBuilder.create().content(longText).build(); 
     primaryStage.setScene(new Scene(scrollPane, 400, 100)); 
     primaryStage.show(); 

     Set<Node> nodes = scrollPane.lookupAll(".scroll-bar"); 
     for (final Node node : nodes) { 
      if (node instanceof ScrollBar) { 
       ScrollBar sb = (ScrollBar) node; 
       if (sb.getOrientation() == Orientation.HORIZONTAL) { 
        System.out.println("horizontal scrollbar visible = " + sb.isVisible()); 
        System.out.println("width = " + sb.getWidth()); 
        System.out.println("height = " + sb.getHeight()); 
       } 
      } 
     } 
    } 
} 
+0

그게 더 이상 작동하지 않습니다. – specializt

+0

저의 작품 (JavaFX 8)은 런타임에 - [http://stackoverflow.com/questions/28904312/how-to-access-scrollbar-in-a-scrollpane-javafx](http://stackoverflow.com)/questions/28904312/how-to-access-scrollbar-in-a-scrollpane-javafx). – David

3

이없는 최고의 연습이지만, 작동, 수평 스크롤

private boolean determineVerticalSBVisible(final ScrollPane scrollPane) { 
    try { 
     final ScrollPaneSkin skin = (ScrollPaneSkin) scrollPane.getSkin(); 
     final Field field = skin.getClass().getDeclaredField("vsb"); 
     field.setAccessible(true); 
     final ScrollBar scrollBar = (ScrollBar) field.get(skin); 
     field.setAccessible(false); 
     return scrollBar.isVisible(); 
    } catch (final Exception e) { 
     e.printStackTrace(); 
    } 
    return false; 
} 

사용 "HSB".

최고 감사합니다. Henrique Guedes.

관련 문제