(翻译)第十六回 JavaFX2.0滚动栏ScrollBar

小编 2026-06-07 阅读:564 评论:0
原文地址http://download.oracle.com/javafx/2.0/ui...

原文地址http://download.oracle.com/javafx/2.0/ui_controls/scrollbar.htm

 

 

ScrollBar 类使你可以创建滚动栏面板和视图。Figure 10-1 展示了滚动栏的三部分:滚动条(thumb),左右按钮(或上下按钮),可滚动区。

Figure 10-1 Elements of the scroll bar

(翻译)第十六回 JavaFX2.0滚动栏ScrollBar
Description of "Figure 10-1 Elements of the scroll bar"

创建Scroll Bar

花点时间看下 Example 10-1 中的代码块。

Example 10-1 Simple Scroll Bar

ScrollBar sc = new ScrollBar();sc.setMin(0);sc.setMax(100);sc.setValue(50);

 setMin 和setMax 方法定义了滚动栏呈现的最小值和最大值。当用户移动滚动条时,它的值会改变。在 Example 10-1 中,它的值是50,所以应用启动后滚动条位于滚动栏的中间。默认滚动栏是水平方向的,你要用setOrientation 方法把它设为垂直方向。

用户可以点击左右按钮(垂直滚动栏是上下按钮)按照增长单位来改变值。UNIT_INCREMENT属性指定了当点击按钮时滚动条调整的幅度。也可以点击滚动区来大幅改变。 BLOCK_INCREMENT属性定义了当点击滚动区时改变的幅度。

在您的应用程序,您可以使用几个滚动条来滚动超出可用空间边界的图形内容。

在应用中使用Scroll Bar

实战体验下。  Example 10-2 中创建的应用实现了一个可滚动的视窗来查看图片。这个应用的目的是让用户能够查看垂直盒子(vertical box)中的内容,它们比视窗好高度要长。

Example 10-2 Scrolling Through Multiple Images

import javafx.application.Application;import javafx.beans.value.ChangeListener;import javafx.beans.value.ObservableValue;import javafx.geometry.Orientation;import javafx.scene.Group;import javafx.scene.Scene;import javafx.scene.control.ScrollBar;import javafx.scene.effect.DropShadow;import javafx.scene.image.Image;import javafx.scene.image.ImageView;import javafx.scene.layout.VBox;import javafx.scene.paint.Color;import javafx.stage.Stage;public class Main extends Application {     final ScrollBar sc = new ScrollBar();    final Image[] images = new Image[5];    final ImageView[] pics = new ImageView[5];    final VBox vb = new VBox();    DropShadow shadow = new DropShadow();     @Override    public void start(Stage stage) {        Group root = new Group();        Scene scene = new Scene(root, 180, 180);        scene.setFill(Color.BLACK);        stage.setScene(scene);        stage.setTitle("Scrollbar");        root.getChildren().addAll(vb, sc);         shadow.setColor(Color.GREY);        shadow.setOffsetX(2);        shadow.setOffsetY(2);         vb.setLayoutX(5);        vb.setSpacing(10);         sc.setLayoutX(scene.getWidth()-sc.getWidth());        sc.setMin(0);        sc.setOrientation(Orientation.VERTICAL);        sc.setPrefHeight(180);        sc.setMax(360);         for (int i = 0; i < 5; i++) {            final Image image = images[i] =                new Image(getClass().getResourceAsStream(                    "fw" +(i+1)+ ".jpg")                );            final ImageView pic = pics[i] =                new ImageView(images[i]);            pic.setEffect(shadow);            vb.getChildren().add(pics[i]);        }         sc.valueProperty().addListener(new ChangeListener<Number>() {            public void changed(ObservableValue<? extends Number> ov,                Number old_val, Number new_val) {                    vb.setLayoutY(-new_val.doubleValue());            }        });         stage.show();    }     public static void main(String[] args) {        launch(args);    }}

代码的第一行向场景中增加了一个带有图片的垂直盒子和一个滚动栏。

垂直盒子的Y坐标会随着滚动条 VALUE 属性的变化而变化。 所以每次滚动条移动时(或者按钮、滚动区)被点击时,垂直盒子就跟着动。见Example 10-3 .

Example 10-3 Implementing the Scrolling of the Vertical Box

sc.valueProperty().addListener(new ChangeListener<Number>() {    public void changed(ObservableValue<? extends Number> ov,        Number old_val, Number new_val) {            vb.setLayoutY(-new_val.doubleValue());        }});

编译并运行应用,效果如Figure 10-2 .

这个应用是ScrollBar 类的典型应用。你也可以在场景内用定制化的该类创建滚动区域。因为对于每个UI控件和节点(node,有Node这个类的),滚动栏都可以从默认实现中修改外观。

版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

热门文章
  • 机房智能化温湿度解决方式之POE供电以太网温湿度传感器

    机房智能化温湿度解决方式之POE供电以太网温湿度传感器
    机房智能化温湿度解决方式之POE供电以太网温湿度传感器 北京盈创力和电子科技有限公司 智能型TCP网口温湿度记录仪 北京IP网络温湿度记录仪厂家,北京盈创力和 北京智能型TCP网口温湿度记录仪IP网络温湿度记录仪是一种新型的基于TCP/IP协议双绞线以太网标准温湿度采集模块,利用它可以实现现场温度值、相对湿度值的采集,同时利用其自身的RJ45通信接口可以方便地和机房监控主机或交换机集线器进行联网。 工作于-40℃~85℃工业级带...
  • Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering

    Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering
    Problem Statement 我们考虑一个具有马尔可夫性质、非线性、非高斯的状态空间模型(State Space Model):对于一个时间序列上的观测结果{yt,t∈N}\\{ y_t , t \\in N \\}{yt​,t∈N},我们认为每个观测结果yty_tyt​的生成依赖于一个无法直接观察的隐变量xt∈{xt,t∈N}x_t \\in \\{x_t , t \\in N \\}xt​∈{xt​,t∈N},即:p(...
  • HTTP状态保持的原理

    HTTP状态保持的原理
    a)在用户登录之后,浏览器返回响应的时候会在响应中添加上cookieb)浏览器接收到cookie之后会自动保存c)当用户再次请求同一服务器中的其他网页的时候,浏览器会自动带上之前保存的cookied)服务接收到请求之后可以请 request 对象中取到cookie 判断当前用户是否登录  Http是无状态的,就是连接时数据互通,关闭后...
  • Hive 系统函数及示例

    Hive 系统函数及示例
    查看所有系统函数 show functions; 函数分类 内置函数【系统函数】 数学函数: floor、round、ceil、cos、log2等 字符串函数: length、reverse、trim、lower、get_json_object、repeat等 收集函数: size 转换函数: cast 日期函数: year、month、datediff、date、date_add等 条件函数: coalesce、case…w...
  • CSRF的原理和防范措施

    CSRF的原理和防范措施
    a)攻击原理:i.用户C访问正常网站A时进行登录,浏览器保存A的cookieii.用户C再访问攻击网站B,网站B上有某个隐藏的链接或者图片标签会自动请求网站A的URL地址,例如表单提交,传指定的参数iii.而攻击网站B在访问网站A的时候,浏览器会自动带上网站A的cookieiv.所以网站A在接收到请求之后可判断当前用户是登录状态,所以...
标签列表