您好,欢迎来到尚车旅游网。
搜索
您的当前位置:首页JavaFX2.0 滑动条Slider

JavaFX2.0 滑动条Slider

来源:尚车旅游网
Slider 类呈现一个控件来显示和回应一个范围的数值。该控件包括一个轨道和一个可以拖动的滑标,也包

含刻度和刻度标记来指示数值。Figure 15-1 展示了一个滑动条并指明了其主要元素。 Figure 15-1 Elements of a 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方法指定了滑动条的当前值,当然必须在最小值和最大值之间。 使用该方法来定义应用启动后滑标的位置。

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

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

轨道时,滑标会向点击方向移动10单位。

在图形应用中使用滑动条

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

Figure 15-2 Three Sliders

Description of \"Figure 15-2 Three Sliders \"

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() { public void changed(ObservableValue ov, Number old_val, Number new_val) { cappuccino.setOpacity(new_val.doubleValue());

opacityValue.setText(String.format(\"%.2f\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() { public void changed(ObservableValue ov, Number old_val, Number new_val) { sepiaEffect.setLevel(new_val.doubleValue());

sepiaValue.setText(String.format(\"%.2f\

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() { public void changed(ObservableValue ov, Number old_val, Number new_val) { cappuccino.setScaleX(new_val.doubleValue()); cappuccino.setScaleY(new_val.doubleValue());

scalingValue.setText(String.format(\"%.2f\

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\下一步就是为它应用视效或CSS风格来改善外观和感觉。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- sceh.cn 版权所有 湘ICP备2023017654号-4

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务