# Jtextfield leeren



## Nao88 (15. Sep 2009)

ich habe ein Jtextfield wo am Anfang z.b hier eingeben seht und ich möchte es gerne wenn das Feld Fokussiert das es geleert wird


----------



## Michael... (15. Sep 2009)

und die Frage lautet??
Wie man herausbekommt wann eine Komponte den Fokus bekommt?
Wie man ein Textfeld leert?
Wie man ein Textfeld leert sobald es den Fokus bekommt?
...?


----------



## Nao88 (15. Sep 2009)

Wie man ein Textfeld leert sobald es den Fokus bekommt?


----------



## jdk6man (15. Sep 2009)

also ein textfeld kann man mit textfeld.setText("") leeren


----------



## Michael... (15. Sep 2009)

... und um zu erfahren, wann eine Komponente den Fokus bekommt kann man per addFocusListener(...) einen FocusListener oder einen FocusAdapter anbinden. Deren Methode focusGained(...) wird aufgerufen sobald die die Komponente den Fokus bekommt.


----------



## Nao88 (15. Sep 2009)

```
class Fenster extends JFrame {
Fenster(){
    super("Mein Fenster");
    this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    this.setSize(250, 200);
    Container contentPane=getContentPane();
    contentPane.setLayout(new FlowLayout(FlowLayout.CENTER));
    JTextField myTextField;
    myTextField = new JTextField("Hello World");
    contentPane.add(myTextField);
    myTextField.addFocusListener(new java.awt.event.FocusAdapter() {
    	public void focusGained(java.awt.event.FocusEvent evt) {
    		myTextField.setText("");
            }
    });
    this.setResizable(false);
    this.setLocation(200, 200);
    this.setVisible(true);
    }
}
```
ich habe jezt nur noch ein problem das der inhalt sofort gelöscht wird obwol kein focus drauf liegt ;(


----------



## eRaaaa (15. Sep 2009)

doch doch, das bekommt sofort den fokus

```
super("Mein Fenster");
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		this.setSize(250, 200);
		Container contentPane = getContentPane();
		contentPane.setLayout(new FlowLayout(FlowLayout.CENTER));
		final JTextField myTextField2;
		myTextField2 = new JTextField("Hello World");
		contentPane.add(myTextField2);
		
		final JTextField myTextField;
		myTextField = new JTextField("Hello World");
		contentPane.add(myTextField);
		myTextField.addFocusListener(new java.awt.event.FocusAdapter() {
			public void focusGained(java.awt.event.FocusEvent evt) {
				myTextField.setText("");
			}
		});
		setResizable(false);
		setLocation(200, 200);
		setVisible(true);
```
so wirds vllt besser sichtbar


----------



## Gast2 (15. Sep 2009)

Nao88 hat gesagt.:


> ich habe ein Jtextfield wo am Anfang z.b hier eingeben seht und ich möchte es gerne wenn das Feld Fokussiert das es geleert wird



Sowas würde ich eh mit einem Highlighter lösen...


----------



## dayaftereh (16. Sep 2009)

Wie ist das eigentlich, Soll man die Swing Componenten im Konstruktor erstellen oder eine eigene Methode machen und die dan vom Konstruktor aufrufen.

Also ich meine so:

```
import java.awt.Component;
import java.util.Arrays;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class Test {

	public Test() {
		initComponent();
	}

	private void initComponent(){
		JFrame f = new JFrame();
		
		JPanel1 //... mehr Component,Listeners etc
	}
}
```

oder so 
	
	
	
	





```
import java.awt.Component;
import java.util.Arrays;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class Test {

	public Test() {
		JFrame f = new JFrame();
		
		JPanel1 //...mehr Component,Listeners etc
	}
}
```

was ist richtig oder superer? das Frage ich micht immer?


----------



## mmz (16. Sep 2009)

Denke das initComponent kommt von Netbeans oder nem anderem GUI Editor. Zumindest macht Netbeans das so, wenn man eine Oberfläche designed/generieren lässt.
Prinzipiell spielt es keine Rolle wie mans macht, da die Methode beim Konstruktoraufruf ja trotzdem aufgerufen wird. Dient höchstens der Übersichtlichkeit halber.


```
...
initMenu();
initPanel1();
initPanel2();
...
```

Das könnte man in den Konstruktor schreiben um verschiedene Initialisierungen zu kapseln und bessere Übersicht im Code zu haben.


----------

