Hallo
Ich verwende IntelliJ, Scenebuilder, Win 8.1 und bin relativ neu im Umgang mit Java.
Es geht um den folgenden Teil meiner App:
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:
Der FXML-Teil:
Die Konsole liefert mir nach 2 Button Klicks die folgende Ausgaben:
..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:
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^^
Ich verwende IntelliJ, Scenebuilder, Win 8.1 und bin relativ neu im Umgang mit Java.
Es geht um den folgenden Teil meiner App:
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:
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: