JavaFXで、スライダーの値をリアルタイムに取得してラベルに表示するプログラムを書いてみます。
目次
ファイル構成
IntelliJ上で
Controller.java
sliderApp.java
scene1.fxml
の3ファイルを作成し、以下のように配置します。

sliderApp.java
package com.example.demo;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.geometry.Pos;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.GridPane;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.stage.Stage;
import java.io.IOException;
public class sliderApp extends Application{
@Override
public void start(Stage stage) throws IOException{
Parent root = FXMLLoader.load(getClass().getResource("scene1.fxml"));
stage.setTitle("title");
stage.setScene(new Scene(root,600,400));
stage.show();
}
}Controller.java
package com.example.demo;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.Slider;
import javafx.scene.control.TextField;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import java.util.regex.Pattern;
public class Controller {
@FXML
Label label;
@FXML
Slider slider;
@FXML
public void sliderDragged(){
label.setText((slider.getValue()+"").split(Pattern.quote("."))[0]);
}
}Sliderインスタンスから返ってくる値はdoubleなので、splitを利用して、ドット以下を切り捨てます。
scene1.fxml
GridPane上にラベルとスライダーを配置します。
<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<GridPane xmlns="http://javafx.com/javafx"
xmlns:fx="http://javafx.com/fxml"
fx:controller="com.example.demo.Controller"
prefHeight="400.0" prefWidth="600.0" >
<Label fx:id="label" GridPane.rowIndex="0" GridPane.columnIndex="0" text="Default val" />
<Slider fx:id="slider" GridPane.rowIndex="1" GridPane.columnIndex="0" onMouseDragged="#sliderDragged" max="100" min="0" />
</GridPane>実行結果

