Slider in JavaFX
In diesem Artikel behandeln wir Slider in JavaFX . Slider ermöglichen es dem Nutzer werte an einer Leiste einzustellen. Dadurch kann er z.B. die Farbwerte einstellen. Wir werden in diesem Artikel ein Programm schreiben, in dem man die Rot Grün Blau Werte mit dem Slider festlegen kann und damit die angezeigte Farbe ändert.[image img_id=”6350″ alt=”Slider in JavaFX 2″ width=”300″ height=”103″]
Slider in JavaFX anlegen
Slider slider = new Slider();
slider.setMin(0);
slider.setMax(100);
slider.setValue(40);
slider.setShowTickMarks(true);
slider.setShowTickLabels(true);
slider.setMinorTickCount(5);
slider.setMajorTickUnit(50);
slider.setBlockIncrement(10);
slider.setPrefSize(500, 5);
Dabei sind die setMin und setMax Funktionen dafür da, die Minimal und Maximalwerte des Sliders zu setzen. setValue setzt den aktuellen Wert des Sliders. setShowMarks und setShowTicketLabels definieren das Aussehen des Sliders. setMinorTickCount ist die Minimale Tickanzahl und setMajorTickUnit setzt den Abstand zwischen Tick Marks. Die setBlockIncrement methode definiert den Abstand den der Thumb sich bewegt, wenn man auf ein Pfeil klickt. Die setPrefSize Methode verändert die Größe des Sliders, in meinem Fall ist er 500 Pixel breit und 50Pixel hoch
Verwenden wir nun drei Slider in JavaFX um die Farbe eines Bereiches zu verändern, dazu erkläre ich den Code in den Kommentaren des Codes.
Weil der Code so lang ist, verwende ich hier einen Spoiler. Du kannst es natürlich auch als Herausforderung sehen und versuchen, das Programm selbst zu schreiben. Du weißt ja was es können soll
Herausforderung – Farben Slider in Java FX
[spoiler title=’Title’]
package application;
import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.Slider;
import javafx.scene.layout.GridPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
try {
// wir legen unser GridPane an
GridPane grid = new GridPane();
// weisen das Padding (interner Abstand) zu
grid.setPadding(new Insets(10, 10, 10, 10));
// und fügen einen kleinen Außenabstand hinzu
grid.setVgap(10);
grid.setHgap(10);
// Hier legen wir das Viereck an,
// und positionieren es im Grid
Rectangle r = new Rectangle();
r.setWidth(200);
r.setHeight(100);
grid.getChildren().add(r);
GridPane.setConstraints(r, 0,3);
Label[] labels = new Label[3];
Slider[] sliders = new Slider[3];
// wir legen alle unsere Slider an
// und positionieren sie entsprechend im Grid
for (int i = 0; i<3; i++){
sliders[i] = new Slider();
sliders[i].setMin(0);
sliders[i].setMax(255);
sliders[i].setValue(40);
sliders[i].setShowTickMarks(true);
sliders[i].setShowTickLabels(true);
sliders[i].setMinorTickCount(5);
sliders[i].setMajorTickUnit(50);
sliders[i].setBlockIncrement(10);
sliders[i].setPrefSize(200, 25);
grid.getChildren().add(sliders[i]);
GridPane.setConstraints(sliders[i], 0,i);
//hier legen wir die drei Labels an
labels[i] = new Label();
grid.getChildren().add(labels[i]);
GridPane.setConstraints(labels[i], 1,i);
}
// hier geben wir den Labels die Texte
labels[0].setText("Rot");
labels[1].setText("Grün");
labels[2].setText("Blau");
// diese For Schleife kümmert sich um das Verhalten
// unserer Slider, wenn wir sie verändern
for (int i = 0; i<3; i++){
sliders[i].valueProperty().addListener(new ChangeListener() {
public void changed(ObservableValue<? extends Number> ov,
Number old_val, Number new_val) {
// hier füllen wir das Viereck mit dem passenden Rot Grün Blau Wert
r.setFill(Color.rgb((int)sliders[0].getValue(),
(int)sliders[1].getValue(), (int)sliders[2].getValue()));
}
});
}
Scene scene = new Scene(grid,300,300);
primaryStage.setScene(scene);
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}
[/spoiler]
Das Ergebnis unseres Programmes: