Slider

Последнее обновление: 20.06.2018

Класс javafx.scene.control.Slider определяет элемент управления в виде числовой шкалы с делениями, на которой можно выбрать определеное значение, проще говоря слайдер.

Для создания слайдера можно использовать один из двух конструкторов класса:

  • Slider(): создает слайдер с настройками по умолчанию

  • Slider​(double min, double max, double value): создает слайдер, для которого установлены минимальное, максимальное и текущее значения

Некоторые наиболее используемые методы слайдера:

  • void setOrientation(Orientation how): устанавливает ориентацию слайдера - горизонтальную или вертикальную

  • void setValue​(double value): устанавливает текущее значение слайдера

  • double getValue(): возвращает текущее значение слайдера

  • void setShowTickMarks​(boolean value): значение true (по умолчанию) делает деления на шкале слайдера видимыми, соответственно значение false делает деления невидимыми

  • void setMinorTickCount(int val): устанавливает количество делений между двумя числовыми отметками на шкале

  • void setMajorTickUnit(int val): устанавливает расстояниие между двумя числовыми отметками на шкале

  • void setShowTickLabels(boolean on): устанавливает видимость числовых меток на шкале

  • void setBlockIncrement(double val): устанавливает, насколько значений будет перемещаться бегунок слайдера с помощью клавиатурных клавиш Вперед и Назад при горизонтальной ориентации и клавиш Вверх и Вниз при вертикальной ориентации

  • void setSnapToTicks(boolean on): при передачи значения true позволяет переходить ровно по делениям (то есть вместо значения типа 4.5677687 будет 5)

Создадим слайдер:

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

import javafx.geometry.Orientation;
 
public class Main extends Application{
	
    public static void main(String[] args) {
         
        Application.launch(args);
    }
     
    @Override
    public void start(Stage stage) throws Exception {
         
        Label lbl = new Label("Value");
		
		Slider slider = new Slider(0.0, 20.0, 10.0);
		slider.setShowTickMarks(true);
		slider.setShowTickLabels(true);
		slider.setBlockIncrement(2.0);
		slider.setMajorTickUnit(5.0);
		slider.setMinorTickCount(4);
		slider.setSnapToTicks(true);
		
		Button btn = new Button("Click");
		btn.setOnAction(event -> lbl.setText("Slider Value: " + slider.getValue()));
		
		FlowPane root = new FlowPane(Orientation.VERTICAL, 10, 10, slider, lbl, btn);
        Scene scene = new Scene(root, 300, 250);
         
        stage.setScene(scene);
        stage.setTitle("Slider in JavaFX");
        stage.show();
    }
}
Slider in JavaFX

В данном случае чтобы вывести текущее значение слайдера на элемент Label, необходимо нажать на кнопку. Однако мы можем сразу динамически изменять текст на метке при изменении значения слайдера. Для этого мы можем прослушивать изменения значения с помощью слушателя ChangeListener:

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

import javafx.geometry.Orientation;
import javafx.beans.value.ObservableValue;
import javafx.beans.value.ChangeListener;
 
public class Main extends Application{
	
    public static void main(String[] args) {
         
        Application.launch(args);
    }
     
    @Override
    public void start(Stage stage) throws Exception {
         
        Label lbl = new Label("Value");
		
		Slider slider = new Slider(0.0, 20.0, 10.0);
		slider.setShowTickMarks(true);
		slider.setShowTickLabels(true);
		slider.setBlockIncrement(2.0);
		slider.setMajorTickUnit(5.0);
		slider.setMinorTickCount(4);
		slider.setSnapToTicks(true);
		
		slider.valueProperty().addListener(new ChangeListener<Number>(){
			
			public void changed(ObservableValue<? extends Number> changed, Number oldValue, Number newValue){
				lbl.setText("Slider Value: " + newValue);
			}
		});
		
		FlowPane root = new FlowPane(Orientation.VERTICAL, 10, 10, slider, lbl);
        Scene scene = new Scene(root, 300, 150);
         
        stage.setScene(scene);
        stage.setTitle("Slider in JavaFX");
        stage.show();
    }
}
Бегунок слайдер в JavaFX

В примерах выше использовались горизонтальные слайдеры, но также можно задать вертикальную ориентацию слайдера:

import javafx.geometry.Orientation;
//...............
Slider slider = new Slider(0.0, 20.0, 10.0);
slider.setOrientation(Orientation.VERTICAL);
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850