Hallo,
Ich arbeite mit der NetBeansIDE 11.2 und nutze u. A. den Window-Builder.
der folgende Code soll die Funktion takeBack der Instanz c von einer Klasse aufrufen, wenn in einem Textfels ein *-Zeichen eingegeben wird. Anschließend soll das Feld wieder geleert, also das *-Zeichen gelöscht werden (siehe 2. if):
Das passiert leider nicht. Die Konsole gibt zwar nur "Inhalt:" aus, findet also in dem Textfeld nichts mehr, aber das *-Zeichen steht noch drin. Woran kann das liegen? Im VK_ENTER-Event funktioniert es, allerdings sollen da andere Zeichen gelöscht werden. Kann es sein, dass die Berechnungen aus takeBack() laufen, bevor das textField die Eingabe empfängt? Wieso ist das *-Zeichen laut Konsoleneingabe trotzdem nicht mehr im Feld?
Vermutlich für das Problem nicht notwendig, aber hier mal mehr Kontext:
Für unsere Wohnheimbar habe ich ein Darts-Rechner geschrieben, der verbleibende Punkte und relativ viele Statistiken (Durchschnittspunke, benötigte Pfeile, Vorgeschläge für zu treffende Felder um zu gewinnen etc.) rechnet. Dafür wird nach jeder Enter-Eingabe die Zahl aus dem textField an Methoden übergeben (der Rechner läuft über ein Display und die Eingaben erfolgen nur mit einem externen Ziffernblock). takeBack() macht alle Berechnungen der letzten Eingabe rückgängig, falls sich vertippt wurde. Das funktioniert alles wunderbar, allerdings steht das *-Zeichen danach noch im Feld.
Ich arbeite mit der NetBeansIDE 11.2 und nutze u. A. den Window-Builder.
der folgende Code soll die Funktion takeBack der Instanz c von einer Klasse aufrufen, wenn in einem Textfels ein *-Zeichen eingegeben wird. Anschließend soll das Feld wieder geleert, also das *-Zeichen gelöscht werden (siehe 2. if):
Java:
import java.awt.event.KeyEvent;
private void textFieldScoreKeyPressed(java.awt.event.KeyEvent evt) {
if(evt.getKeyCode()==KeyEvent.VK_ENTER) {
String str;
str = textFieldScore.getText();
score = Integer.parseInt(str);
textFieldScore.setText(""); // <--- hier funktioniert's!
c.manageCalculate(score);
}
}
if(evt.getKeyCode()==KeyEvent.VK_MULTIPLY) {
textFieldScore.setText(""); //<--- hier nicht :-(
c.takeBack();
textFieldScore.setText(""); //<--- hier auch nicht :-(
System.out.println("Inhalt: " + textFieldScore.getText());
}
}
}
Das passiert leider nicht. Die Konsole gibt zwar nur "Inhalt:" aus, findet also in dem Textfeld nichts mehr, aber das *-Zeichen steht noch drin. Woran kann das liegen? Im VK_ENTER-Event funktioniert es, allerdings sollen da andere Zeichen gelöscht werden. Kann es sein, dass die Berechnungen aus takeBack() laufen, bevor das textField die Eingabe empfängt? Wieso ist das *-Zeichen laut Konsoleneingabe trotzdem nicht mehr im Feld?
Vermutlich für das Problem nicht notwendig, aber hier mal mehr Kontext:
Für unsere Wohnheimbar habe ich ein Darts-Rechner geschrieben, der verbleibende Punkte und relativ viele Statistiken (Durchschnittspunke, benötigte Pfeile, Vorgeschläge für zu treffende Felder um zu gewinnen etc.) rechnet. Dafür wird nach jeder Enter-Eingabe die Zahl aus dem textField an Methoden übergeben (der Rechner läuft über ein Display und die Eingaben erfolgen nur mit einem externen Ziffernblock). takeBack() macht alle Berechnungen der letzten Eingabe rückgängig, falls sich vertippt wurde. Das funktioniert alles wunderbar, allerdings steht das *-Zeichen danach noch im Feld.