(翻译)第二十一回 JavaFX2.0 滑动条Slider

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

 

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

 

 

Slider 类呈现一个控件来显示和回应一个范围的数值。该控件包括一个轨道和一个可以拖动的滑标,也包含刻度和刻度标记来指示数值。Figure 15-1 展示了一个滑动条并指明了其主要元素。

Figure 15-1 Elements of a Slider

(翻译)第二十一回 JavaFX2.0 滑动条Slider
Description of "Figure 15-1 Elements of a Slider"

创建Slider

花点时间看下 Example 15-1 中的代码,它产生了一个Figure 15-1 展示的滑动条。

Example 15-1 Creating a Slider

Slider slider = new Slider();slider.setMin(0);slider.setMax(100);slider.setValue(40);slider.setShowTickLabels(true);slider.setShowTickMarks(true);slider.setMajorTickUnit(50);slider.setMinorTickCount(5);slider.setBlockIncrement(10);

setMin setMax 方法分布定义了滑动条呈现的最小值和最大值。setValue方法指定了滑动条的当前值,当然必须在最小值和最大值之间。 使用该方法来定义应用启动后滑标的位置。

两个布尔方法 setShowTickMarkssetShowTickLabels 定义了滑动条的视觉外观。在 Example 15-1 中,刻度和数值显示了。另外,大刻度之间的单元距离设置为50,大刻度直接的小刻度数量定义为5。把 setSnapToTicks方法设为 true 来保持滑标总和刻度对其。

setBlockIncrement方法定义了用户点击轨道时滑标移动的距离。 Example 15-1 中该值是10,就是说当用户点击轨道时,滑标会向点击方向移动10单位。

在图形应用中使用滑动条

现在看一下Figure 15-2。 该应用使用了3个滑动条来白哦几图片的属性。每个滑动条调整一个特定的视觉特点:透明度、褐色调、伸缩比例。

 

 

Example 15-2   shows the source code of this application.

Example 15-2 Slider Sample

import javafx.application.Application;import javafx.beans.value.ChangeListener;import javafx.beans.value.ObservableValue;import javafx.geometry.Insets;import javafx.scene.Group;import javafx.scene.Scene;import javafx.scene.control.Label;import javafx.scene.control.Slider;import javafx.scene.effect.SepiaTone;import javafx.scene.image.Image;import javafx.scene.image.ImageView;import javafx.scene.layout.GridPane;import javafx.scene.paint.Color;import javafx.stage.Stage; public class Main extends Application {     final Slider opacityLevel = new Slider(0, 1, 1);        final Slider sepiaTone = new Slider(0, 1, 1);    final Slider scaling = new Slider (0.5, 1, 1);    final Image image  = new Image(getClass().getResourceAsStream(        "cappuccino.jpg")    );     final Label opacityCaption = new Label("Opacity Level:");    final Label sepiaCaption = new Label("Sepia Tone:");    final Label scalingCaption = new Label("Scaling Factor:");     final Label opacityValue = new Label(        Double.toString(opacityLevel.getValue()));    final Label sepiaValue = new Label(        Double.toString(sepiaTone.getValue()));    final Label scalingValue = new Label(        Double.toString(scaling.getValue()));     final static Color textColor = Color.WHITE;    final static SepiaTone sepiaEffect = new SepiaTone();     @Override    public void start(Stage stage) {        Group root = new Group();        Scene scene = new Scene(root, 600, 400);        stage.setScene(scene);        stage.setTitle("Slider Sample");        scene.setFill(Color.BLACK);         GridPane grid = new GridPane();        grid.setPadding(new Insets(10, 10, 10, 10));        grid.setVgap(10);        grid.setHgap(70);         final ImageView cappuccino = new ImageView (image);        cappuccino.setEffect(sepiaEffect);        GridPane.setConstraints(cappuccino, 0, 0);        GridPane.setColumnSpan(cappuccino, 3);        grid.getChildren().add(cappuccino);        scene.setRoot(grid);         opacityCaption.setTextFill(textColor);        GridPane.setConstraints(opacityCaption, 0, 1);        grid.getChildren().add(opacityCaption);                 opacityLevel.valueProperty().addListener(new ChangeListener<Number>() {            public void changed(ObservableValue<? extends Number> ov,                Number old_val, Number new_val) {                    cappuccino.setOpacity(new_val.doubleValue());                    opacityValue.setText(String.format("%.2f", new_val));            }        });         GridPane.setConstraints(opacityLevel, 1, 1);        grid.getChildren().add(opacityLevel);         opacityValue.setTextFill(textColor);        GridPane.setConstraints(opacityValue, 2, 1);        grid.getChildren().add(opacityValue);         sepiaCaption.setTextFill(textColor);        GridPane.setConstraints(sepiaCaption, 0, 2);        grid.getChildren().add(sepiaCaption);         sepiaTone.valueProperty().addListener(new ChangeListener<Number>() {            public void changed(ObservableValue<? extends Number> ov,                Number old_val, Number new_val) {                    sepiaEffect.setLevel(new_val.doubleValue());                    sepiaValue.setText(String.format("%.2f", new_val));            }        });        GridPane.setConstraints(sepiaTone, 1, 2);        grid.getChildren().add(sepiaTone);         sepiaValue.setTextFill(textColor);        GridPane.setConstraints(sepiaValue, 2, 2);        grid.getChildren().add(sepiaValue);         scalingCaption.setTextFill(textColor);        GridPane.setConstraints(scalingCaption, 0, 3);        grid.getChildren().add(scalingCaption);         scaling.valueProperty().addListener(new ChangeListener<Number>() {            public void changed(ObservableValue<? extends Number> ov,                Number old_val, Number new_val) {                    cappuccino.setScaleX(new_val.doubleValue());                    cappuccino.setScaleY(new_val.doubleValue());                    scalingValue.setText(String.format("%.2f", new_val));            }        });        GridPane.setConstraints(scaling, 1, 3);        grid.getChildren().add(scaling);         scalingValue.setTextFill(textColor);        GridPane.setConstraints(scalingValue, 2, 3);        grid.getChildren().add(scalingValue);         stage.show();    }     public static void main(String[] args) {        launch(args);    }}

ImageView 对象的不透明度由第一个滑动条改变,叫opacityLevel。SepiaTone 效果的改变由sepiaTone滑动条控制。第三个滑动条定义了放大倍数,调用的是 setScaleX setScaleY 方法。

Example 15-3   中的代码是一个把Slider类的 getValue方法返回的双精度值转换为 String ,也应用了格式来显示滑动条的值:点后两位小数的浮点类型。

 

Example 15-3 Formatting the Rendered Slider's Value

scalingValue.setText((Double.toString(value)).format("%.2f", value));

下一步就是为它应用视效或CSS风格来改善外观和感觉。

版权声明

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

热门文章
  • 机房智能化温湿度解决方式之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在接收到请求之后可判断当前用户是登录状态,所以...
标签列表