JavaFX mit .setText() befülltes Textfield liefert anschließend mit .getText() den ursprünglichen Wert?

config_de

Mitglied
Hallo 🙂

Ich verwende IntelliJ, Scenebuilder, Win 8.1 und bin relativ neu im Umgang mit Java.

Es geht um den folgenden Teil meiner App:

screen1.png


Genauer gesagt um die 2 Textfield's und den Button "rechts". Die 2 Textfelder sind x- und y-Koordinaten.

Wenn ich den Button betätige soll y um 1 erhöht werden. Falls y == 10, dann soll x++ und y = 1. Nach 1:10 kommt dann also bspw. 2:1.

Hier mein relevanter Code aus dem Controller:

Java:
public class GalaxyController {

    @FXML
    public TextField xTextfield;

    @FXML
    public TextField yTextfield;

    @FXML
    private void handleButtonRechts() {

        System.out.println("rechts");

        Integer x = Integer.parseInt(xTextfield.getText().trim());
        Integer y = Integer.parseInt(xTextfield.getText().trim());

        System.out.println("x:" + x);
        System.out.println("y:" + y);

       if(y == 10){

           System.out.println("if");

           x++;
           y = 1;

       }else{

           System.out.println("else");

           y++;

       }

        xTextfield.setText("" + x);
        yTextfield.setText("" + y);
       System.out.println("Ende \n");

}


Der FXML-Teil:

Code:
<TextField layoutX="522.0" layoutY="104.0" prefHeight="25.0" prefWidth="32.0" text="1" fx:id="xTextfield" />
<TextField fx:id="yTextfield" layoutX="555.0" layoutY="104.0" prefHeight="25.0" prefWidth="32.0" text="1" />
<JFXButton layoutX="592.0" layoutY="104.0" onAction="#handleButtonRechts" prefHeight="25.0" prefWidth="55.0" style="-fx-background-color: #4F4F4F;" text="rechts" textFill="WHITE" />


Die Konsole liefert mir nach 2 Button Klicks die folgende Ausgaben:

Code:
rechts
x:1
y:1
else
Ende

rechts
x:1
y:1
else
Ende

..usw. egal wie oft ich den Button drücke, es kommt diese Ausgabe. y bleibt immer 1, er geht immer in den else Zweig.

Nachdem ich den Button das erste Mal betätigt habe:

screen2.png


Auch wenn ich vor dem ersten Methodenaufruf die y-Koordinate händisch in z.B. 5 ändere, dann liefert er mir 1 mit .getText() (und macht dann daraus y=2)

Was mache ich falsch? Benutze ich die falsche Methode? Habe ich da etwas falsch verstanden? Mit .getText() sollte ich doch zumindest den vom User eingetragenen Wert erhalten. Ich bin mir ziemlich sicher, dass ich das schon mal irgendwo so gemacht habe^^
 
Zuletzt bearbeitet:
Ach, na klar. Jetzt sehe ich den Fehler.

Ich nehme an der einen Stelle xTextfield anstatt yTextfield 😱

Okay, wie kann ich den Thread wieder löschen? Gar nicht? ^^

Da sucht man sich 2 Stunden den Ast und dann sowas🙄 Vielleicht sollte ich doch wieder schlafen gehen
 

Zurück
Oben