Beispieltext in JTextField

7

Ich bin auf der Suche nach einer Möglichkeit, Beispieltext in ein Swing-JTextField einzufügen und grau auszublenden. Der Beispieltext sollte dann verschwinden, sobald etwas in dieses Textfeld eingegeben wird. Etwas, was ähnlich wie stackoverflow ist, wenn ein Benutzer eine Frage mit dem Titelfeld posten.

Ich würde es gerne sehen, wenn es bereits eine erweiterte Implementierung von JTextField wäre, so dass ich es einfach als einfachen Ersatz einfügen kann. Alles von Swingx würde funktionieren. Ich denke, wenn es keinen einfachen Weg gibt, dies zu tun, wird meine Option wahrscheinlich sein, die paint-Methode von JTextField zu überschreiben, etwas auf diese Weise zu tun.

Danke

    
startoftext 18.02.2011, 17:40
quelle

7 Antworten

7

Die Klasse Texteingabeaufforderung bietet die erforderliche Funktionalität, ohne ein benutzerdefiniertes JTextField zu verwenden.

    
camickr 18.02.2011, 19:39
quelle
5

Wenn Sie externe Libraries verwenden können, haben die Swing-Komponenten von Jide-Software das, wonach Sie suchen; Es heißt LabeledTextField ( javadoc ) und ist Teil des JIDE Common Layer (Open Source Project) ) - was frei ist. Es macht was mklmnn vorgeschlagen hat.

    
Daniel Teply 18.02.2011 17:57
quelle
3

Wie wäre es, das Textfeld mit Standardtext zu initialisieren und ihm einen Fokus-Listener zu geben, so dass bei der Fokussierung, wenn der Text .equals der Standardtext ist, selectAll () auf dem JTextField aufgerufen wird.

    
Hovercraft Full Of Eels 18.02.2011 18:02
quelle
2

Fügen Sie anstelle eines Überschreibens einen Wert in das Feld ein und fügen Sie ein KeyListener hinzu, das den Wert bei der Registrierung eines Schlüsselstrichs entfernen würde. Vielleicht muss es auch den Vordergrund wechseln.

Sie könnten dies in Ihre eigene benutzerdefinierte JTextField -Klasse einfügen, die den Standardtext in einem Konstruktor verwenden würde.

    
jzd 18.02.2011 17:43
quelle
2
%Vor%     
ignis 03.11.2012 08:16
quelle
1

Sie können das nicht mit einem einfachen Textfeld tun, aber Sie können eine deaktivierte JLabel über die JTextField setzen und sie ausblenden, wenn das Textfeld den Fokus erhält.

    
Mot 18.02.2011 17:44
quelle
1

Mach es so:

  1. Definieren Sie die Zeichenfolge mit dem ursprünglichen Text, den Sie mögen, und richten Sie Ihre TextField ein:

    %Vor%
  2. Fügen Sie Ihrem TextField einen Fokus-Listener hinzu, der den gesamten Inhalt des TextFields auswählt, wenn dieser noch den Anfangswert hat. Alles, was Sie eingeben können, ersetzt den gesamten Inhalt, da er ausgewählt ist.

    %Vor%
Costis Aivalis 18.02.2011 18:16
quelle

Tags und Links