2016-01-13 43 views
1

的sooo滚动条/滚动面板的位置,我一直在gooling并通过Oracle文档寻找,但无法找到如何获得我的文本区域内访问滚动条/滚动面板任何暗示。充分利用JavaFX的文本区域

由于我的TextArea内的文本超出了给定的界限,水平和垂直滚动条出现......我想获得垂直滚动条的当前位置。

我希望有人能帮忙。

编辑:这个问题反映到JavaFX,抱歉没有正确指出这一点。

+0

[这些甲骨文文档](http://docs.oracle.com/javase/8/javafx/api/javafx/scene /control/TextArea.html#getScrollTop--)? –

回答

3

根据Javadocs for TextAreaTextArea定义了scrollLeftscrollTop属性,它们分别表示内容水平和垂直滚动的程度。

所以可以绑定到或观察这些属性,视需要:

import javafx.application.Application; 
import javafx.scene.Scene; 
import javafx.scene.control.Label; 
import javafx.scene.control.TextArea; 
import javafx.scene.layout.BorderPane; 
import javafx.stage.Stage; 

public class ScrollTrackingTextArea extends Application { 

    @Override 
    public void start(Stage primaryStage) { 
     TextArea textArea = new TextArea(); 
     textArea.setWrapText(true); 

     Label label = new Label(); 
     label.textProperty().bind(textArea.scrollTopProperty().asString("You are %.0f pixels from the top.")); 

     BorderPane root = new BorderPane(textArea, label, null, null, null); 

     textArea.setText("Lorem ipsum dolor sit amet, consectetur adipiscing elit. " 
       + "Suspendisse ut odio eu est rutrum fermentum. Curabitur eu volutpat ante. " 
       + "Pellentesque maximus laoreet dapibus. In vulputate vestibulum lectus, " 
       + "non auctor purus suscipit at. Vivamus turpis magna, condimentum nec purus id, " 
       + "iaculis ultrices nisl. Quisque eget mi vitae dolor placerat hendrerit et in nisi. " 
       + "Nam eget velit sem. Suspendisse porta, tellus at ornare varius, " 
       + "tellus massa tempor lacus, vel dictum nibh tortor sed turpis. " 
       + "Curabitur commodo urna ac pharetra vulputate. Maecenas urna erat, " 
       + "convallis in imperdiet ac, mollis nec risus. Nam eleifend aliquet " 
       + "libero eu maximus. Nullam hendrerit, justo consectetur imperdiet porttitor, " 
       + "libero tortor egestas neque, eget laoreet metus quam non erat. " 
       + "Donec interdum dignissim dolor, et maximus arcu sodales quis. " 
       + "Suspendisse commodo hendrerit odio a bibendum. Suspendisse sed dolor sed urna " 
       + "congue porta at nec mauris. Suspendisse non risus a turpis aliquet suscipit. " 
       + "Proin quis erat et nisl commodo venenatis. Nulla ipsum lorem, " 
       + "blandit non posuere id, ultricies ac est. Pellentesque ut nunc laoreet, " 
       + "finibus ligula porttitor, placerat massa. Sed quis nisl gravida metus venenatis " 
       + "luctus ut quis sapien. Donec a nunc elit. Donec lobortis massa massa, " 
       + "a scelerisque urna fringilla non. Donec molestie cursus nunc, " 
       + "at convallis quam ultrices ut. Sed sed ornare nulla, eu dapibus purus. " 
       + "Integer a tortor et odio rhoncus pretium. Nulla facilisi. Aliquam ut dapibus ligula. " 
       + "Aenean auctor elementum neque, at congue lectus suscipit non. Suspendisse potenti. " 
       + "Fusce vestibulum ex at nunc bibendum, in porttitor est lobortis. " 
       + "Nam felis ex, vestibulum et dui nec, tristique semper enim. Maecenas libero erat, " 
       + "tempor vitae nisi in, porttitor tincidunt nunc.Sed congue dui eu vulputate iaculis. " 
       + "Quisque urna elit, aliquet molestie viverra ut, consectetur ut risus. " 
       + "In ullamcorper nec nisl non posuere. Nullam ligula sem, malesuada a ornare in, " 
       + "vestibulum eu purus. Cum sociis natoque penatibus et magnis dis parturient montes, " 
       + "nascetur ridiculus mus. Ut molestie elit turpis, non blandit nunc consequat id. " 
       + "Morbi vitae tincidunt ex. Maecenas justo odio, dapibus non iaculis a, tincidunt ut augue. " 
       + "Praesent a sollicitudin neque. Curabitur in tempus nibh. Ut nec lacinia ante, ac tincidunt quam. " 
       + "Phasellus porttitor tellus mi, et iaculis enim volutpat a. Nulla eget fringilla eros. " 
       + "Phasellus ultricies aliquet massa. In quam leo, luctus a dolor sit amet, " 
       + "facilisis consectetur enim. Vivamus ac odio et enim ultrices mattis. " 
       + "Vivamus euismod nisi et posuere porttitor. Pellentesque vehicula libero id quam ultricies facilisis. " 
       + "Vivamus vitae turpis vitae ligula efficitur aliquet eget eu risus. " 
       + "Proin bibendum odio a lacus vulputate interdum. Nam luctus urna eu iaculis fringilla. " 
       + "Quisque commodo metus risus. Quisque faucibus facilisis ultricies. " 
       + "Vestibulum quis consequat nisi. Suspendisse finibus et tellus et eleifend. " 
       + "Suspendisse congue malesuada urna, in eleifend arcu aliquam id. " 
       + "Curabitur accumsan mi augue, ac laoreet neque viverra sit amet. Integer luctus tempus ligula non facilisis. " 
       + "Maecenas eget lobortis felis."); 

     primaryStage.setScene(new Scene(root, 400, 400)); 
     primaryStage.show(); 
    } 

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

通常情况下,一个JTextArea被包装在一个ScrollPane中(而不是相反的方式,正如你的问题所建议的那样)。因此,请尝试您的JTextArea的getParent()方法,并检查它是否是JScrollPane的实例....如果是,您可以获取滚动条的位置。

+0

问题是关于JavaFX'TextArea',而不是'JTextArea',我想。 –

+0

然后请你的问题说清楚,并请不要downvote我对于这一点,因为它是不明确的,你讲关于JavaFX –

+1

这也可能是有用的信息标签。另外,请注意,不是我的问题。 –