Jtextfield leeren

Status
Nicht offen für weitere Antworten.

Nao88

Bekanntes Mitglied
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 😀😀
 
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?
...?
 
... 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.
 
Java:
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 ;(
 
doch doch, das bekommt sofort den fokus
Java:
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 🙂
 
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:
Java:
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
Java:
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?
 
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.

Java:
...
initMenu();
initPanel1();
initPanel2();
...

Das könnte man in den Konstruktor schreiben um verschiedene Initialisierungen zu kapseln und bessere Übersicht im Code zu haben.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben