JAVA - Wie kann ich meinem JTextfield sagen, dass mein ganzes Programm solange warten soll, bis eine Eingabe getätigt wurde??
Hallo, die Frage steht ja bereits oben. Ich will, dass der ganze Code erst bei einer getätigten Eingabe(Egal welche) in mein JTextField ausgeführt wird.
Eine while-Schleife hat nicht funktioniert :
```Operator '==' cannot be applied to 'javax.swing.JTextField', 'java.lang.String´´´
Wie kann ich das also nun machen?
2 Antworten
Nutze das Klickereignis eines Buttons als Indikator, dass der Nutzer eine Eingabe getätigt hat.
Du brauchst also nur einen ActionListener an einen Button hängen. Sobald dieser gedrückt wird, wird von Swing die actionPerformed-Methode (unten umgesetzt durch einen Lambda-Ausdruck) aufgerufen. In der kannst du dir den aktuellen Text aus dem Textfeld holen und beispielsweise seine Länge prüfen oder mit einem anderen String vergleichen.
var textField = new JTextField();
var button = new JButton("Approve");
button.addActionListener(event -> {
String input = textField.getText();
if (textField.length() > 0) {
// do something ...
}
});
Du musst davon ausgehen, dass UI-Anwendungen eventgesteuert sind. Du musst also irgendeinen Event haben - das kann entweder sein, dass ein Knopf gedrückt wird oder ähnliches, wo dann geprüft wird, ob im Eingabefeld was steht.
Wenn Du einfach eine While-Schleife machst, blockierst Du die Event-Behandlung und bekommst gar keine Eingaben in Dein Textfeld.
Naja, der Erstellen-Button hat doch einen Action Listener. Der macht momentan nichts anderes, als den Inhalt des Textfeldes in ein Label zu schreiben. Dort muss Code rein, der a) prüft, ob im Textfeld war drin steht und dann b) eine Methode aufruft, die wirklich die Datei schreibt. Da gehört dann der Code aus dem try/catch rein (ggf. verändert, so dass das funktioniert). Eine Schleife hat da nichts zu suchen.
Ich habe halt keine Ahnung, wie ich ausdrücken kann, dass der gucken soll, ob was dort steht. Also steht der Inhalt dann im Label und gar nicht im JTextField? Mir kommen irgendwie nur Abfragen ins Spiel aber wenn das nicht geht, habe ich halt keine Ahnung.
Nein. Das JTextField hat Methoden zum Auslesen oder Setzen des Textinhalts. Ohne jetzt gegoogelt zu haben, wie die genau heißen, würde erwarten, so etwas tun zu können:
String inputs = jTextField1.getText();
Dann kannst Du prüfen, ob der Inhalt leer ist mit
if (inputs.length > 0) { ...
Alles gut! Regex9 hat doch alles noch einmal schön kurz zusammengefasst.
Guck mal :
Das hier ist einmal ein bisschen was von dem, was ich geschrieben habe. Das mit dem :
sagt ihm halt nur, dass der das nehmen soll was dort steht, aber er soll warten.
Wie mache ich das denn jetzt ? Bin so ein Anfänger mit dem Swing, ist also Kack-Code, sieht auch nicht gut aus, soll aber erstmal funktionieren.