JavaFXでスライダーの作成・イベントを登録する方法などについて記載します。
目次
スライダーの作成・イベントの登録方法
スライダーを作成するには、Sliderクラスを使用します。
構文
Slider slider = new Slider();
実行例
スライダーを動かすと、右側のラベルに変更後の値が表示されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
import javafx.application.Application; import javafx.beans.value.ObservableValue; import javafx.geometry.Pos; import javafx.scene.Scene; import javafx.scene.control.Label; import javafx.scene.control.Slider; import javafx.scene.layout.HBox; import javafx.stage.Stage; public class Main extends Application { @Override public void start(Stage pStage) throws Exception { // スライダー Slider slider = new Slider(); slider.setMin(0); // 最小値 slider.setMax(100); // 最大値 slider.setValue(50); // 初期値 slider.setMajorTickUnit(50); // 大メモリの間隔 slider.setMinorTickCount(5); // 大メモリ内のメモリ数 slider.setShowTickLabels(true); // メモリ値の表示 slider.setShowTickMarks(true); // メモリ線の表示 slider.setBlockIncrement(10); // 矢印キーなどで操作した際の値の増減値 slider.setPrefWidth(200); // スライダーの値を表示するラベル Label lblSliderValue = new Label(Double.toString(slider.getValue())); lblSliderValue.setPrefWidth(50); // スライダーにイベントを登録する slider.valueProperty().addListener(( ObservableValue<? extends Number> ov, Number oldVal, Number newVal) -> { lblSliderValue.setText(String.format("%.1f", newVal)); // 変数newValに変更後の値が格納されている }); // 配置 HBox hbRoot = new HBox(); hbRoot.setAlignment(Pos.CENTER); hbRoot.setSpacing(20); hbRoot.getChildren().addAll(slider, lblSliderValue); pStage.setTitle("スライダー"); pStage.setWidth(300); pStage.setHeight(200); pStage.setScene(new Scene(hbRoot)); pStage.show(); } public static void main(String[] args){ Application.launch(args); } } |
1. イベントの登録方法
スライダーにイベントを登録するには、addListener メソッドを使用します。
構文
slider.valueProperty().addListener((
ObservableValue<? extends Number> ov, Number oldVal, Number newVal) -> {
// イベント発生時の処理
});
ObservableValue<? extends Number> ov, Number oldVal, Number newVal) -> {
// イベント発生時の処理
});
引数の oldVal には変更前の値が、newVal には変更後の値が格納されています。
2. 最小・最大値の設定
最小値の設定には setMinメソッド、最大値の設定には setMax メソッドを使用します。
構文
Slider slider = new Slider();
slider.setMin(0); // 最小値
slider.setMax(100); // 最大値
slider.setMin(0); // 最小値
slider.setMax(100); // 最大値
3. 大メモリの間隔の設定
大メモリの設定には setMajorTickUnit メソッドを使用します。
構文
Slider slider = new Slider();
slider.setMajorTickUnit(50);
slider.setMajorTickUnit(50);
上記のようにすると、50毎に大メモリで区切られます。
次のように書き換えると25毎に大メモリで区切られます。
slider.setMajorTickUnit(25);
4. 大メモリ内のメモリ間隔の設定
大メモリ内のメモリ間隔の設定には setMinorTickCount メソッドを使用します。
構文
Slider slider = new Slider();
slider.setMinorTickCount(5);
slider.setMinorTickCount(5);
上記の場合、大メモリ内に5つの小メモリが表示されます。
次のように書き換えると大メモリ内に1つの小メモリが表示されます。
slider.setMinorTickCount(1);
5. メモリ値・線の表示、非表示の設定
メモリ値の表示は、setShowTickLabels メソッドを使用します。
メモリ線の表示は、setShowTickMarks メソッドを使用します。
どちらも、trueの場合は表示、falseの場合は非表示になります。
構文
Slider slider = new Slider();
slider.setShowTickLabels(true); // メモリ値の表示
slider.setShowTickMarks(true); // メモリ線の表示
slider.setShowTickLabels(true); // メモリ値の表示
slider.setShowTickMarks(true); // メモリ線の表示
この場合、メモリ値・線ともに表示します。
次のように書き換えると、メモリ値・線ともに非表示になります。
slider.setShowTickLabels(false); // メモリ値を非表示
slider.setShowTickMarks(false); // メモリ線を非表示
slider.setShowTickMarks(false); // メモリ線を非表示
6. 矢印キーでの増減値の設定
矢印キーでスライダーをコントロールした際の値の増減値は、setBlockIncrement メソッドで設定します。
構文
Slider slider = new Slider();
slider.setBlockIncrement(10);
slider.setBlockIncrement(10);
上記では、引数に10を設定しているので、矢印キーで操作すると10ずつ増減します。