1. Exkurs: JavaFX-Spinner
A Spinner
in JavaFX is a UI control that allows users to select a value from a sequence by either typing it or using arrow buttons to increment/decrement the value.
1.1. Basic Usage
To create a numeric Spinner
:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Spinner;
import javafx.scene.control.SpinnerValueFactory;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class SpinnerExample extends Application {
@Override
public void start(Stage stage) {
// Create a Spinner for numbers
Spinner<Integer> spinner = new Spinner<>();
// Set the value factory (range: 1 to 100, initial value: 50, step: 1)
spinner.setValueFactory(new SpinnerValueFactory.IntegerSpinnerValueFactory(1, 100, 50, 1));
// Add spinner to the scene
VBox root = new VBox(10, spinner);
root.setStyle("-fx-padding: 20; -fx-alignment: center;");
Scene scene = new Scene(root, 300, 200);
stage.setScene(scene);
stage.setTitle("JavaFX Spinner Example");
stage.show();
}
public static void main(String[] args) {
launch();
}
}
1.2. Spinner with Strings
A Spinner
can use a list of values, such as strings:
Spinner<String> stringSpinner = new Spinner<>();
SpinnerValueFactory<String> valueFactory =
new SpinnerValueFactory.ListSpinnerValueFactory<>(FXCollections.observableArrayList("Option 1", "Option 2", "Option 3"));
stringSpinner.setValueFactory(valueFactory);
1.3. Event Handling
You can listen to changes in the spinner’s value using a listener:
spinner.valueProperty().addListener((observable, oldValue, newValue) -> {
System.out.println("Selected Value: " + newValue);
});
1.4. Editable Spinner
By default, a Spinner
is editable. You can disable editing as follows:
spinner.setEditable(false);
1.5. Styling the Spinner
The Spinner
can be styled using CSS:
.spinner {
-fx-background-color: lightblue;
-fx-padding: 5;
}
To apply the CSS file:
scene.getStylesheets().add("style.css");
1.6. Advanced Example: Spinner with Different Step Sizes
You can configure a Spinner
with specific step sizes:
Spinner<Double> doubleSpinner = new Spinner<>();
doubleSpinner.setValueFactory(new SpinnerValueFactory.DoubleSpinnerValueFactory(0.0, 10.0, 5.0, 0.5));
1.7. Common Methods
-
getValue()
: Retrieves the current value of the spinner. -
setValue()
: Sets a specific value for the spinner. -
increment(int steps)
: Increases the spinner’s value by a specified number of steps. -
decrement(int steps)
: Decreases the spinner’s value by a specified number of steps.
1.8. References
-
JavaFX API Reference: Spinner Documentation
-
JavaFX Tutorials: CodeMakery JavaFX Tutorials
This content was createt with ChatGPT (Prompt: How to to use spinner in JavaFx) |
2. 2025-03-25
2.1. Sockets
var serverSocket = ServerSocketFactory
.getDefault()
.createServerSocket(8080);
-
Handler für einkommende Requests (ClientSocket)
Socket clientSocket = serverSocket.accept(); handleConnect(clientSocket);
-
Streams für Input und Output
var outputStream = clientSocket.getOutputStream(); var inputStream = clientSocket.getInputStream();
3. 2025-05-26
3.1. Übung
-
Erstellen Sie eine Liste der Klasse mit Vor- und Nachnamen sowie der PLZ
-
Nun erstellen Sie für Vor- und Nachnamen sowie die PLZT jeweils einen binären Suchbaum. Als Datenelement verwenden Sie den Index der einzelnen Elemente (Personen) in der Liste
-
Bei gleichen Elementen in Personen (zB PLZ 4060) werden als Ergebnis mehrere Personen ausgegeben
-
Bei jedem Zugriff ist die Anzahl der Vergleichvorgänge im Baum auszugeben.
-
Der Baum ist grafisch darzustellen bspw als JavaFx Baumelement oder auf einem Canvas oder auch in plantuml (https://plantuml.com/de/mindmap-diagram)
-
Erweiterung
-
Wird die Liste mit Personen geändert, sind natürlich sämtliche Suchbäume zu aktualisieren.
-
Implementieren Sie die Ausgabe in preorder, postorder, levelorder, inorder
-
3.2. Bäume
- Rang eines Baumes
-
Anzahl seiner direkten Nachfolger
- Ordnung des Baumes
-
Maximaler Rang seiner Knoten
- Traversierung
-
Systematisches Durchlaufen von Datenstrukturen wie Bäume, Arrays oder Listen
- Rekursion
-
Rekursion ist eine Technik, bei der sich eine Methode selbst aufruft, um ein Problem zu lösen. Dabei wird ein großes Problem in kleinere Teilprobleme zerlegt – bis zu einem Abbruchpunkt (Abbruchbedingung).
3.2.1. Baumtraversierungen
-
preorder
-
zuerst die Wurzel
-
dann linken Teilbaum
-
zuletzt rechten Teilbaum
-
-
inorder
-
zuerst linken Teilbaum
-
dann die Wurzel
-
zuletzt rechten Teilbaum
-
-
postorder
-
zuerst linken Teilbaum
-
dann rechten Teilbaum
-
zuletzt die Wurzel
-
-
levelorder (Breitensuche)
-
Ebene für Ebene von oben nach unten
-
innerhalb jeder Ebene von links nach rechts
-

3.2.2. Spezielle Bäume
-
Binärbaum
-
Jeder Knoten hat maximal 2 Nachfolger
-
-
Balancierter Baum
-
AVL Baum
-
-
Vollständiger Baum
-
Ein vollständiger Baum ist ein Binärbaum, bei dem alle Ebenen vollständig gefüllt sind, außer ggf. der letzten die von link nach rechts gefüllt ist.
-
Unterste Ebene ist von links beginnend gefüllt
-
Höhere Ebenen sind gänzlich gefüllt
-