翻译自   Scroll Bar

本章介绍如何使用滚动条控件创建可滚动窗格。

ScrollBar类可以在应用程序中创建滚动窗格和意见。图9-1显示了滚动条的三个区域:拇指,右侧和左侧按钮(或向下和向上按钮)以及轨道。

图9-1滚动条的元素

创建滚动条

花点时间查看例9-1中的代码片段。

例9-1简单滚动条

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

setMinsetMax方法定义由滚动条表示的最小值和最大值。当用户移动拇指时,滚动条的值会改变。在示例9-1中,值等于50,因此当应用程序启动时,拇指位于滚动条的中心。默认情况下,滚动条水平定向。但是,您可以使用该setOrientation方法设置垂直方向。

用户可以单击左或右按钮(垂直方向的向下或向上按钮)以单位增量滚动。该UNIT_INCREMENT属性指定单击按钮时滚动条的调整量。另一个选项是通过块增量在轨道内单击。该BLOCK_INCREMENT属性定义单击条形轨迹时滚动条的调整量。

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

在应用程序中使用滚动条

检查滚动条的运行情况。示例9-2中显示的应用程序实现了可滚动场景以查看图像。此应用程序的任务是使用户能够查看垂直框的内容,该内容比场景的高度更长。

例9-2滚动多个图像

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();@Overridepublic 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);}
}

代码的第一行添加了一个带有图像的垂直框和一个滚动条到场景。

YVALUE滚动条的属性发生变化时,垂直框的坐标会发生变化,因此每次移动滑块或单击按钮或轨道时,垂直框都会移动,如例9-3所示。

示例9-3实现垂直框的滚动

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

编译并运行此应用程序将生成如图9-2所示的输出。

图9-2滚动条示例

该应用程序显示了ScrollBar该类的一个典型用法。您还可以自定义此类以在场景中创建滚动区域。对于每个UI控件和每个节点,可以设置滚动条的样式以从默认实现更改其外观。

相关的API文档  

  • ScrollBar

  • JavaFX CSS规范

JavaFX UI控件教程(十)之Scroll Bar相关推荐

  1. JavaFX UI控件教程(二)之JavaFX UI控件

    翻译自  JavaFX UI控件 本章概述了通过API提供的JavaFX UI控件. JavaFX UI控件是使用场景图中的节点构建的.因此,控件可以使用JavaFX平台的视觉丰富功能.由于JavaF ...

  2. JavaFX UI控件教程(一)之简述

    翻译自  JavaFX UI控件概述 关于本教程 本教程介绍JavaFX API中提供的内置JavaFX UI控件. 该文件包含以下章节: JavaFX UI控件 标签 按钮 单选按钮 切换按钮 复选 ...

  3. JavaFX UI控件教程(八)之Choice Box

    翻译自   Choice Box 本章介绍了选项框,这些UI控件提供了在几个选项之间快速选择的支持. 使用ChoiceBox该类将选择框添加到JavaFX应用程序.其简单的实现如图7-1所示. 图7- ...

  4. JavaFX UI控件教程(二十八)之UI控件的自定义

    翻译自  Customization of UI Controls 本章介绍了UI控件自定义的各个方面,并总结了Oracle提供的一些提示和技巧,以帮助您修改UI控件的外观和行为. 您可以通过应用层叠 ...

  5. JavaFX UI控件教程(二十二)之Titled Pane和Accordion

    翻译自  Titled Pane and Accordion 本章介绍如何在JavaFX应用程序中使用accordion和title窗格的组合. 标题窗格是带标题的面板.它可以打开和关闭,它可以封装任 ...

  6. JavaFX UI控件教程(二十)之HTML Editor

    翻译自  HTML Editor 在本章中,您将学习如何使用嵌入式HTML编辑器编辑JavaFX应用程序中的文本. 该HTMLEditor控件是一个功能齐全的富文本编辑器.它的实现基于HTML5的文档 ...

  7. JavaFX UI控件教程(十八)之Progress Bar和Progress Indicator

    翻译自  Progress Bar and Progress Indicator 在本章中,您将了解进度指示器和进度条,以及可视化JavaFX应用程序中任何操作进度的UI控件. 本ProgressIn ...

  8. JavaFX UI控件教程(十六)之Separator

    翻译自  Separator 本章介绍如何使用分隔符组织JavaFX应用程序的UI组件. SeparatorJavaFX API中可用的类表示水平或垂直分隔线.它用于划分应用程序用户界面的元素,不会产 ...

  9. JavaFX UI控件教程(十五)之Combo Box

    翻译自   Combo Box 本章介绍如何在JavaFX应用程序中使用组合框.它讨论了可编辑和不可编辑的组合框,教您如何跟踪可编辑组合框中的更改并处理它们上的事件,并解释如何使用单元工厂来更改组合框 ...

最新文章

  1. 本地化ASPXPivotGrid控件
  2. Vmware虚拟机网络及IP配置
  3. SQLAlchemy 报错 NotSupportedError: Authentication plugin ‘caching_sha2_password’ is not supported 解决方法
  4. oracle+semijoin,Semi join 与anti join
  5. 6 个步骤,搞定 AI 车牌识别器!(附详细分析)
  6. linux安装mpich
  7. FTP Client Setup
  8. DNS服务器之二:从服务器的实现
  9. java左侧菜单栏_左侧和右侧导航栏项目左侧的Bootstrap 3 Navbar Collapse菜单
  10. obspy中文教程(六)
  11. 我不 大冰2017新书pdf免费下载
  12. 程序员面试必备软技能,值得收藏!
  13. Django模型中的关系:一对一、一对多与多对多
  14. 美国西储大学滚动轴承实验数据
  15. html页面怎么保存和读取cookie 推荐MDN封装的cookie方法
  16. Idea开发springBoot 中使用 thymeleaf 模板$表达式报红波浪线解决方案
  17. 【面试招聘】计算机网络专场(一)
  18. 单片机c语言彩灯依次点亮,基于单片机的LED彩灯控制器
  19. FreeBSD 配置经验
  20. IDEA this license K71U8DBPNE has bean cancelled

热门文章

  1. 81. 搜索旋转排序数组 II(014)二分查找+思路+详解+二种做法
  2. Mysql中group by 使用中发现的问题
  3. [mybatis]缓存_缓存原理图
  4. [设计模式]简单工厂和工厂方法模式适用场景
  5. [PAT乙级]1020 月饼
  6. [Java基础]体验Lambda表达式
  7. sql if 和insert_拼多多面试:Mybatis是如何实现SQL语句复用功能的?
  8. 噪声与振动控制工程手册_声学分享客噪声与振动控制篇大型隔振工程案例介绍...
  9. 交通标志识别项目教程
  10. 机器学习朴素贝叶斯算法+tkinter库界面实现好瓜坏西瓜分类