libro
www.tuyano.com
初心者のためのJavaFXプログラミング入門

主なコントロールの利用 (5/5)

作成:2014-11-29 10:24
更新:2014-11-29 10:24

■スライダーについて

アナログ的に「ここからここまでの間の値」を入力するのに用いられるのが「スライダー」です。スライダーは、マウスでバーのノブをドラッグすることで数値を設定します。これは、javafx.scene.controlパッケージに「Slider」というクラスとして用意されています。
new Slider()
new Slider(
最小値, 最大値, 現在値 )

引数なしで作成すると、デフォルトの状態でインスタンスを作成します。引数に最小値、最大値、現在の値をそれぞれdoubleで指定すると、指定された範囲内から値を選ぶようにできます。

このSliderは、表示に関する細かなプロパティをもっており、それらを設定することで表示の仕方をいろいろと調整できます。

・表示方向を設定する
《slider》.setOrientation(《Orientation》);
これは、縦向き化横向きかを設定するものです。引数には、javafx.geometryパッケージのOrientationクラスのフィールドを指定します。このクラスには以下の2つのクラスフィールドが用意されています。

HORIZONTAL――横方向を示す値です。
VERTICAL――縦方向を示す値です。

・目盛りの表示をO/OFFする
《slider》.setShowTickMarks(《boolean》);
《slider》.setShowTickLabels(《boolean》);
スライダーには数値の目盛りを表示できます。setShowTickMarksはメモリの印を設定するもので、trueにするとメモリが表示されます。またsetShowTickLabelsは、メモリ内に最小値、最大値などの値を表示します。

・値をスナップする
《slider》.setSnapToTicks(《boolean》);
ドラッグした際、表示されている目盛りの位置に値が強制的に揃えられます。これがfalseだと、ドラッグは制約がなくなり、値はそのまま細かな実数値で得られるようになります。

・値を操作する
double 値 = 《slider》.getValue();
《slider》.setValue(《double》);
Sliderの値は、getValue/setValueで操作できます。得られる値は、実数になります。


では、これも簡単な利用例を下にあげておきましょう。ドラッグして適当に値を設定し、ボタンをクリックすると、現在の値が表示されます。なぜ別途ボタンを用意したかというと、Sliderクラスはアクションイベントが対応していないためです。

ただし、それ以外のイベントは用意されており、それらを利用して操作時の処理を実装することもできます。これについてはまた改めて説明することにしましょう。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

package com.tuyano.libro;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.Slider;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;

public class App extends Application {
    Label label;
    Slider slider;
    Button button;
    
    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage stage) throws Exception {
        label = new Label("This is JavaFX!");
        slider = new Slider(0, 100, 50);
        slider.setShowTickMarks(true);
        slider.setShowTickLabels(true);
        slider.setSnapToTicks(true);
        button = new Button("CLICK");
        button.setOnAction((ActionEvent)->{
            label.setText("VALUE: " + slider.getValue());
        });
        BorderPane pane = new BorderPane();
        pane.setTop(label);
        pane.setCenter(slider);
        pane.setBottom(button);
        Scene scene = new Scene(pane, 320, 120);
        stage.setScene(scene);
        stage.show();
    }

}

※関連コンテンツ

「初心者のためのJavaFXプログラミング入門」に戻る