Last active
May 22, 2021 19:21
-
-
Save jewelsea/6627047 to your computer and use it in GitHub Desktop.
JavaFX Slider value change logger
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import javafx.application.Application; | |
import javafx.beans.value.*; | |
import javafx.geometry.*; | |
import javafx.scene.Scene; | |
import javafx.scene.control.*; | |
import javafx.scene.layout.*; | |
import javafx.stage.Stage; | |
public class SliderChangeLog extends Application { | |
private final ListView<String> startLog = new ListView<>(); | |
private final ListView<String> endLog = new ListView<>(); | |
@Override public void start(Stage stage) throws Exception { | |
Pane logsPane = createLogsPane(); | |
Slider slider = createMonitoredSlider(); | |
VBox layout = new VBox(10); | |
layout.setAlignment(Pos.CENTER); | |
layout.setPadding(new Insets(10)); | |
layout.getChildren().setAll( | |
slider, | |
logsPane | |
); | |
VBox.setVgrow(logsPane, Priority.ALWAYS); | |
stage.setTitle("Slider Value Change Logger"); | |
stage.setScene(new Scene(layout)); | |
stage.show(); | |
} | |
private Slider createMonitoredSlider() { | |
final Slider slider = new Slider(0, 1, 0.5); | |
slider.setMajorTickUnit(0.5); | |
slider.setMinorTickCount(0); | |
slider.setShowTickMarks(true); | |
slider.setShowTickLabels(true); | |
slider.setMinHeight(Slider.USE_PREF_SIZE); | |
slider.valueChangingProperty().addListener(new ChangeListener<Boolean>() { | |
@Override | |
public void changed( | |
ObservableValue<? extends Boolean> observableValue, | |
Boolean wasChanging, | |
Boolean changing) { | |
String valueString = String.format("%1$.3f", slider.getValue()); | |
if (changing) { | |
startLog.getItems().add( | |
valueString | |
); | |
} else { | |
endLog.getItems().add( | |
valueString | |
); | |
} | |
} | |
}); | |
return slider; | |
} | |
private HBox createLogsPane() { | |
HBox logs = new HBox(10); | |
logs.getChildren().addAll( | |
createLabeledLog("Start", startLog), | |
createLabeledLog("End", endLog) | |
); | |
return logs; | |
} | |
public Pane createLabeledLog(String logName, ListView<String> log) { | |
Label label = new Label(logName); | |
label.setLabelFor(log); | |
VBox logPane = new VBox(5); | |
logPane.getChildren().setAll( | |
label, | |
log | |
); | |
logPane.setAlignment(Pos.TOP_LEFT); | |
VBox.setVgrow(log, Priority.ALWAYS); | |
return logPane; | |
} | |
public static void main(String[] args) { launch(args); } | |
} |
Hi I'm asking to thank yu first for the great stuff yu're making and let me ask where is the best place I could learn javafx css from and plz don't send me oracle's reference page !!
For some reason, it's not well explained !!
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Answer to StackOverflow question: JavaFX 2.2: Hooking Slider Drag n Drop Events.