Eingabeverarbeitung mit JavaFX
Umwandlung in Majuskel
Main.java
public final class Main extends javafx.application.Application
{public void start( final javafx.stage.Stage primaryStage )
{ final javafx.scene.control.TextField text = new javafx.scene.control.TextField( "text" );
text.setOnAction( object ->{ text.setText( text.getText().toUpperCase() ); });
final javafx.scene.Scene scene = new javafx.scene.Scene( text );
primaryStage.setScene( scene );
primaryStage.show(); }}transcript
- Oberfläche (kein UML)
.----------------.
| Text in Gro... |
|----------------| Eingabetaste .----------------.
||Muessiggang ----------------------->| MUESSIGGANG |
'----------------' '----------------'- Verdrahtung (kein UML)
.----------.
| Textfeld |
'----------'
|
v
.---------------------------------------------------.
| { text.setText( text.getText().toUpperCase() ); } |
'---------------------------------------------------'- Sequenzierung (kein UML)
.----------------.
| Textfeld |
'----------------'
|
| getText()
| java.lang.String
v
.----------------.
| toUpperCase() |
'----------------'
|
| java.lang.String
| setText()
v
.----------------.
| Textfeld |
'----------------'
Früher wurden prozedurale Programm gerne in die Teile „Einlesen“, „Verarbeiten“ und „Ausgeben“ zerlegt. Auch in unserem Programm kann man diese identifizeren:
- Auszug aus dem Quelltext
text.setOnAction( event ->{ text.setText( text.getText().toUpperCase() ); });
Ausgeben Einlesen Verarbeiten
Einige Methoden und Typen
- Abbildung einer Auswahl von Methoden aus der Klasse »javafx.application.Application«
.-------------------------------------------------.
| : javafx.application.Application |
| -------------------------------- |
|-------------------------------------------------|
|-------------------------------------------------|
| + start( javafx.stage.Stage ) |
'-------------------------------------------------'- Abbildung einer Auswahl von Methoden aus der Klasse »javafx.stage.Stage«
.-------------------------------------------------.
| : javafx.stage.Stage |
| -------------------- |
|-------------------------------------------------|
|-------------------------------------------------|
| + show() |
| + setScene( javafx.scene.Scene ) |
'-------------------------------------------------'- Abbildung der Klasse »javafx.scene.Scene«
.-------------------------------------------------.
| javafx.scene.Scene |
|-------------------------------------------------|
|-------------------------------------------------|
| + new javafx.scene.Scene( javafx.scene.Parent ) |
'-------------------------------------------------'
Die Schreibweise »javafx.scene.layout.Pane#getChildren()« bedeutet im folgenden Schaubild „die nicht-statische Methode mit der Signatur »getChildren()« aus der Klasse »javafx.scene.layout.Pane«.
- Abbildung einiger Typen und ihrer Hierarchiebeziehung sowie einiger Methodensignaturen, die zeigt, was alles in »add« und »Scene« als Argument verwendet werden kann
javafx.scene.layout.Pane#getChildren().add( javafx.scene.Node )
^
/_\
|
new javafx.scene.Scene( javafx.scene.Parent )
^
/_\
|
.-------------------------:-------------------------.
| | |
| javafx.scene.control.Button
javafx.scene.layout.Pane |
|
^
/_\ javafx.scene.control.TextField
|
.----------------------'----------------------.
| | |
|
javafx.scene.layout.VBox | javafx.scene.layout.HBox
|
javafx.scene.control.DialogPane
javafx.scene.control.PopupControl.cssBridge
javafx.scene.layout.AnchorPane
javafx.scene.layout.BorderPane
javafx.scene.layout.FlowPane
javafx.scene.layout.GridPane
javafx.scene.layout.StackPane
javafx.scene.layout.TilePane
javafx.scene.text.TextFlow- Abbildung der Proklamation der Methode »getChildren()«
javafx.collections.ObservableList< Node >getChildren()
/ Übungsaufgabe
Lösen Sie die Verschachtelungen in dem folgenden Block so auf, daß in jeder Anweisung nicht mehr als ein Methodenaufruf steht. (Refaktor)
- Block
{ text.setText( text.getText().toUpperCase() ); }