Color Picker in JavaFX
In diesem Artikel behandeln wir den Color Picker in JavaFX. Dabei handelt es sich um eine UI Element mit dem wir die eine Farbe auswählen können. Schauen wir uns mal an wie man so einen Color Picker in JavaFX einbaut und verwendet.
Anlegen eines Color Picker in JavaFX
ColorPicker colorPicker = new ColorPicker();
Das sieht dann so aus:
[image img_id=”6262″ alt=”Color Picker in JavaFX” width=”268″ height=”300″]
Wenn wir nun die Ausgangsfarbe Festlegen wollen, dann können wir es auf 2 wegen machen:
ColorPicker colorPicker2 = new ColorPicker(Color.RED);
ColorPicker colorPicker3 = new ColorPicker(Color.web("#000000"));
Bei colorpicker2 wird der Ausgangswert auf Rot gesetzt. Bei Colorpicker 3 auf Schwarz. Mit Color.web(‘#XXXXXX’) können wir die Hexadezimalwerte der Farben verwenden. Dabei steht FF für 255 also die voll ausgefüllte Farbei. Der Color Picker in JavaFX der auf FFFFFF als Color.web gestellt ist hat somit FF = 255 für sowohl rot, als auch grün und blau. Wenn man alle Farben zusammenfügt, erhält man in Programmiersprachen die Farbe weiß
Nun eine kleine Herausforderung für dich. Lege eine Programm an, welches ein Viereck mit der Farbe ausfüllt, die im Color Picker gewählt wurde. Um Aktionen eines Color Pickers in JavaFX zu erkennen, benötigst Du die Funktion setOnAction()
Lösung der Herausforderung von Color Picker in JavaFX
[spoiler title=’Zum Ansehen öffnen’][RegUserOnly]
package application;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.ColorPicker;
import javafx.scene.layout.GridPane;
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);
// legt eine Viereck der größe 200*100 an
Rectangle r = new Rectangle();
r.setWidth(200);
r.setHeight(100);
ColorPicker colorPicker = new ColorPicker();
// die Aktion die durchgeführt werden soll
// wenn eine Farbe gewählt wurde
colorPicker.setOnAction((ActionEvent t) -> {
// füllt das Viereck mit der gewählten Farbe aus
r.setFill(colorPicker.getValue());
});
grid.getChildren().add(colorPicker);
grid.getChildren().add(r);
GridPane.setConstraints(colorPicker, 0,0);
GridPane.setConstraints(r, 0,1);
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);
}
}
[/RegUserOnly]
[/spoiler]
Das Ergebnis sollte etwa so aussehen.