# TextFeld überprüfen



## FeBe95 (8. Feb 2012)

Hallo!

Ich habe ein aus meiner Sicht simples Problem, aber ich finde nirgends einen Lösung:

ich möchte einfach nur in einem if-Abschnitt überprüfen, ob ein eingebener Text einer bestimmten Vorlage entspricht.

```
public void button3_ActionPerformed(ActionEvent evt) {
    // TODO hier Quelltext einfügen
    if (textField1.getText().length() == 0) {
       GUI.showmessage ("Bitte einen Namen eingeben!");
    }
    else {...}
}
```
Das habe ich bis jetzt, überprüft aber nur, ob ein Textfeld leer ist. Wie mache ich das für einen bestimmten Text?:
if (textField1.getText() = "bestimmter Text"){} geht nicht 

Danke im Vorraus

FeBe95


PS.: Das GUI.showmessage ist ein eigener Befehl, aus einer anderen Datei importiert:

```
import javax.swing.*;

public class GUI{
  public static void showmessage(String text){
    JOptionPane.showMessageDialog(null, text);
  }
}
```


----------



## HimBromBeere (8. Feb 2012)

Strings vergleicht man mit .equals()


----------



## FeBe95 (8. Feb 2012)

das hatte nicht funktioniert!? Weder mit textField1.getText().equals() = "Name" oder ohne .getText()...


----------



## FeBe95 (8. Feb 2012)

muss dass ein JTextfeld sein und wenn ja was ist da der Unterschied zu AWT-Textfeld?


----------



## ireas (8. Feb 2012)

FeBe95 hat gesagt.:


> das hatte nicht funktioniert!? Weder mit textField1.getText().equals() = "Name" oder ohne .getText()...



Korrekt wäre:

```
if (textField1.getText().equals("Name")) {
        // ....
    }
```
Das machst du prinzipiell immer bei Strings so, da nur so der Inhalt und nicht der Speicherort des Objekts verglichen wird.


----------



## FeBe95 (8. Feb 2012)

Und dann gleich eine Frage hinterher: in einer if() kann man anscheinend keine || oder Verknüpfung erstellen, wenn das eine ein Integer Wert und das andere ein String ist!? Wie wie in diesem fall =0 und "Name"?


----------



## HimBromBeere (8. Feb 2012)

Klar kannst du..

```
if(number == 1 || "hallo".equals(str)) {...}
```


EDIT: Danke für den Hinweis, Fab1... hab ich in der Eile einfach mal übersehen das fehlende Gleichheitszeichen. Ist nun geändert.


----------



## FeBe95 (8. Feb 2012)

jetzt gehts Danke!
Das mit den unterschiedlichen Typen (int und string) ist hier ja nicht der Fall!


----------



## ireas (8. Feb 2012)

FeBe95 hat gesagt.:


> Und dann gleich eine Frage hinterher: in einer if() kann man anscheinend keine || oder Verknüpfung erstellen, wenn das eine ein Integer Wert und das andere ein String ist!? Wie wie in diesem fall =0 und "Name"?



Doch, geht auch! Jeder Vergleich gibt ja einen Wahrheitswert zurück, egal, _was_ da verglichen wird. Diese Wahrheitswerte kannst du dann mit [c]||[/c] und [c]&&[/c] etc. verknüpfen.


```
if (textField1.getText().length() == 0 || textField1.getText().equals("name")) {
    // ...
}
```


----------



## FeBe95 (8. Feb 2012)

und wo wir grad dabei sind:
kann ich dann diese if-Überprüfung per ENTER auslösen?


----------



## Fab1 (8. Feb 2012)

HimBromBeere hat gesagt.:


> Klar kannst du..
> 
> ```
> if(number = 1 || "hallo".equals(str)) {...}
> ```



du machst hier eine Zuweisung und vergleichst number nicht auf Gleichheit. Wahrscheinlich ein Flüchtigkeitsfehler.

@FeBe
Du müsstest einen KeyListener implementieren und in dessen actionPerformed die If-Anweisung schreiben.


----------



## FeBe95 (8. Feb 2012)

Fab1 hat gesagt.:


> Du müsstest einen KeyListener implementieren und in dessen actionPerformed die If-Anweisung schreiben.



sorry ich bin noch ein Anfänger.. was müsste ich machen?


----------



## ireas (8. Feb 2012)

FeBe95 hat gesagt.:


> sorry ich bin noch ein Anfänger.. was müsste ich machen?



Schau dir mal diese Einführung an.


----------



## Fab1 (8. Feb 2012)

Hier mal ein kleines Beispiel von mir.


```
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.*;

import javax.swing.JTextField;

public class Test implements KeyListener {

	static JTextField feld;
	public static void main(String[] args) {
		
		
		feld = new JTextField();
		
		
}

	@Override
	public void keyPressed(KeyEvent e) {
		if(e.getKeyCode() == KeyEvent.VK_ENTER){
		// Das was ausgeführt werden soll wenn enter gedrückt wird.
			if(feld.getText().length() == 0 || feld.getText().equals("Hallo")){
				
			}
			
	}
	}

	@Override
	public void keyReleased(KeyEvent arg0) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void keyTyped(KeyEvent arg0) {
		// TODO Auto-generated method stub
		
	}
}
```

[EDIT]Ansonsten hier noch ein Tutorial. How to Write a Key Listener (The Java™ Tutorials > Creating a GUI With JFC/Swing > Writing Event Listeners)
ist zwar auf Englisch aber relativ leicht verständlich und sehr gut meiner Meinung nach.
[/EDIT]


----------



## FeBe95 (8. Feb 2012)

habe nur das 
	
	
	
	





```
if(e.getKeyCode() == KeyEvent.VK_ENTER){
```
 übernommen und "e" durch "evt" ersetzt.

Vielen Dank für die schnelle Hilfe!


----------



## FeBe95 (8. Feb 2012)

kann ich auch einstellen, dass er das ENTER nur annimmt, wenn ein bestimmter button auch enabled ist?

```
if(evt.getKeyCode() == KeyEvent.VK_ENTER && button2.getEnabled(true)){
```
 funktioniert nicht.


----------



## Fab1 (8. Feb 2012)

du könntest in einer Variable (boolean) den Zustand den Buttons speichern. Und anschließend im KeyListener prüfen ob die Variable true ist 

```
boolean buttonZustand = false;
// Im actionPerformed des Buttons muss der Zustand auf true gesetzt werden.
	

if(evt.getKeyCode() == KeyEvent.VK_ENTER && buttonZustand == true){
// mach irgendwas
}
```


----------



## FeBe95 (8. Feb 2012)

Ok vielen dank


----------



## FeBe95 (9. Feb 2012)

aber wie speichere ich das ab? Wie gebe ich den "richtigen" Zustand an?


----------



## FeBe95 (9. Feb 2012)

habe es jetzt mit "isEnabled()" hinbekommen, also danke


----------



## tob.ix (14. Apr 2022)

Hallo, ich weiß nicht ob das jetzt noch einen interessiert, aber ich habe eine ziemlich leichte Lösung für das Problem. Was ich aus deinem Code lese, möchtest du überprüfen ob ein Textfeld leer ist. 

```
import javafx.scene.control.TextField
import javafx.application.Application
...

public class Main extends Application(){
    ...
        TextField txtfld = new Textfield("Das ist eine Text!");
        if (txtfld.getText().isEmpty()){
            ...
        }
    else{...}
}
```

Also kurz gesagt:

```
TextField txtfld = new TextField("Das ist ein Text!");

if(txtfld.getText().isEmpty()){
...
}

else{
...
}
```

MfG!


----------

