サムネがコーヒーの記事は書きかけです。

JavaFX スライダーの値をラベルに表示する

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>

実行結果

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です