Viele Textfield mit Hilfe eines MousListener leeren - möglich?

k3ltis

Mitglied
Hallo,

ich habe ein paar Textfelder, in denen zu Beginn schon was drinsteht. Wenn man mit der Maus draufklickt soll der Text verschwinden. Das ist alles kein Problem.

Ich möchte aber gerne Aufwand und zeilen sparen und einen MouseListener schreiben, der an jedes Textfield übergeben wird und der dann das jeweilige Feld leert.

Zum besseren Verständis meines Problems ein Ausschnitt aus dem Code:

Java:
		eventname = new JTextField("eventname");
		eventname.addMouseListener(new MouseListener() {
			
			@Override
			public void mouseReleased(MouseEvent arg0) {}
			@Override
			public void mousePressed(MouseEvent arg0) {}
			@Override
			public void mouseExited(MouseEvent arg0) {}
			@Override
			public void mouseEntered(MouseEvent arg0) {}	
			
			@Override
			public void mouseClicked(MouseEvent arg0) {
				eventname.setText("");
				
			}
		});
// Wie man sieht müsste ich zu jedem Textfield einen eigenen Listener implementieren.
		
datum = new JTextField("Datum [YYYY-MM-DD]");
uhrzeit = new JTextField("Uhrzeit [hh:mm]");
dauer = new JTextField("Dauer in Stunden");
budget = new JTextField("Budget");


Eine andere Möglichkeit wäre die Klasse MouseListener implementieren zu lassen...

Java:
public class Dialog_NeuesEvent extends DefaultJDialog implements MouseListener{



@Override
public void mouseClicked(MouseEvent e) {
if(eventname.getText().equals("bla")){
eventname.setText("");
}
//Vom Gefühl her ist dies der richtige Ansatz,
//dich ich weiß nicht, wie man aus dem MouseEvent e genau die 
//Komponente herausbekommt, auf die man geklickt hat.
}


Kann mir jemand helfen?
Gruß Keltis
 
Zuletzt bearbeitet:

Timothy Truckle

Top Contributor
Noch eine Möglichkeit wäre, die MouseListenerImplemenierung als "nested class" zu machen und das Textfeld datin als Objektvariable im Konstruktor zu übergeben.

Eclipse (und viele andere IDEs) kann das automatisch. <ctrl>+<shift>+<t> -> "convert to nested class"

bye
TT
 

k3ltis

Mitglied
Wow erstmal vielen Dank!

Also ich musste grad erstmal nachschlagen :D und so... aber ich denke ich hab verstanden was du meinstest:

Sieht jetzt so aus und klappt super:

Java:
		eventname = new JTextField("eventname");
		eventname.addMouseListener(new TextFieldListener(eventname));

//....


	static class TextFieldListener implements MouseListener{
		JTextField textFeld;
		
		public TextFieldListener(JTextField field){
			this.textFeld = field;
		}

		@Override
		public void mouseClicked(MouseEvent e) {
			textFeld.setText("");
			
		}

		@Override
		public void mouseEntered(MouseEvent e) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void mouseExited(MouseEvent e) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void mousePressed(MouseEvent e) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void mouseReleased(MouseEvent e) {
			// TODO Auto-generated method stub
			
		}
		
	}


Das ist doch, was du meinstest oder?

Mercy!!!
 

k3ltis

Mitglied
Naja abgesehen davon, dass das Prinzip eines allgemeinen Listeners auf alles mögliche angewendet werden kann ist das, was ich hier konkret erreichen wollte Pflicht, wenn es um Benutzerfreundlichkeit geht.

Stell dir mal vor du bist Angestellter bei einem Eventservice und musst jeden Tag hunderte Daten in eine Software eintragen. Die Textfelder in den Eingabemasken jedesmal von neuem zu leeren ist mehr als nervig...

Sicherlich könnte man die Felder gleich leer lassen und eine entsprechende Beschreibung nebendran setzen... was bei mir aber nicht so ist.

Ich hoffe das konnte dich überzeugen :)
 

Timothy Truckle

Top Contributor
Stell dir mal vor du bist Angestellter bei einem Eventservice und musst jeden Tag hunderte Daten in eine Software eintragen. Die Textfelder in den Eingabemasken jedesmal von neuem zu leeren ist mehr als nervig...
Das macht normalerweise Das Model, über seine Events. Allerdings mit der selben Technik die Du hier einsetzt. Die Listener sitzen eben am Model, nicht an der Maus.

Sicherlich könnte man die Felder gleich leer lassen und eine entsprechende Beschreibung nebendran setzen... was bei mir aber nicht so ist.)
Schon mal was von ToolTipps gehört? [JAPI]JTextfield[/JAPI] (und auch das dazugehörige [JAPI]JLable[/JAPI] hat eine
Code:
setToolTippText()
Methode. Das ist deutlich besser, als eine Beschreibung direkt in's Textfeld zu schreiben.

Ich hoffe das konnte dich überzeugen :)
Nein.

bye
TT
 

k3ltis

Mitglied
jajajaja es gibt bestimmt noch 30 andere möglichkeiten... man kann ja nur froh sein, dass nicht jede gui gleichermaßen programmiert ist... wo bliebe denn da der spaß :D
 

xehpuk

Top Contributor
Wenn ich das richtig verstanden habe, sollen die Textfelder einen Platzhalter beinhalten. Dann ist deine Vorgehensweise falsch, benutzerunfreundlich.

Hier ein paar Gründe, die mir auf die Schnelle einfallen:
  1. Navigiert der Nutzer mithilfe der Tabulator-Taste, wird der Text nicht entfernt (Stichwort: Fokus).
  2. Klickt der Nutzer in ein Feld, das er bereits ausgefüllt hat, um eine Kleinigkeit zu ändern, wird sein Text ebenfalls gelöscht.
  3. Es lässt sich nicht feststellen, ob der aktuell eingetragene Text vom Nutzer stammt oder der Platzhalter ist.
Ist für mich als Nutzer immer wieder ein Ärgernis, auf solch eine Anwendung zu stoßen. :mad:
Ich habe dazu auch schon ein wenig [post=892970]herumprobiert[/post].
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B viele JPanels auf JLayeredPane -> to SVG? AWT, Swing, JavaFX & SWT 15
H Viele ActionListener (MouseListener) - Performance AWT, Swing, JavaFX & SWT 24
L Ein Actionlistener für ein Textfeld, anstatt viele Actionlistener für ein Textfeld AWT, Swing, JavaFX & SWT 7
A JavaFX Sehr viele Exceptions bei Taschenrechner mit JavaFx AWT, Swing, JavaFX & SWT 2
M If für viele TextFields AWT, Swing, JavaFX & SWT 7
kaoZ Swing JMenuBar, Preferences, Properties... und viele andere lustige Dinge (Best Practice) AWT, Swing, JavaFX & SWT 15
M Swing Erste Schritte mit der GUI, viele Probleme AWT, Swing, JavaFX & SWT 36
propra 2D-Grafik Beliebig viele Objekte auf einer Zeichenfläche zeichnen AWT, Swing, JavaFX & SWT 15
L unbestimmt viele JComboBox und ItemListener dazu erstellen AWT, Swing, JavaFX & SWT 2
P 2D-Grafik Viele Bilder zu einem Video AWT, Swing, JavaFX & SWT 3
Dit_ Wenn viele NebenFenster zum Locationsetzen das HauptFenster brauchen AWT, Swing, JavaFX & SWT 2
P SWT Composite und viele Labels AWT, Swing, JavaFX & SWT 10
D Zu viele repaints() AWT, Swing, JavaFX & SWT 17
R JTable für sehr viele Daten sehr langsam AWT, Swing, JavaFX & SWT 20
G Viele Fehler beim zeichen AWT, Swing, JavaFX & SWT 5
Z zu viele prozesse AWT, Swing, JavaFX & SWT 2
G zu viele/große BufferedImage führt zu Java heap space AWT, Swing, JavaFX & SWT 5
D Wie viele Pixel welches Icon? AWT, Swing, JavaFX & SWT 4
TheJavaKid Lösung für zu Viele JMenuItems. AWT, Swing, JavaFX & SWT 4
T viele Canvas auf einem Panel und das GUI schmiert ab AWT, Swing, JavaFX & SWT 6
Starchild Beliebig viele Knöpfe AWT, Swing, JavaFX & SWT 5
Juelin Eingabensteuerung mit Textfield AWT, Swing, JavaFX & SWT 20
J Eingaben aus Textfield & ComboBox speichern und in ComboBox wieder ausgeben AWT, Swing, JavaFX & SWT 3
K JavaFX Taschenrechner textField auf 10stellen begrenzen AWT, Swing, JavaFX & SWT 26
Z textField.getText = null AWT, Swing, JavaFX & SWT 15
officialmaxl JavaFX Textfield getTextfield() in String speichern AWT, Swing, JavaFX & SWT 1
L Swing Wert vom Textfield in Array List hinzufügen AWT, Swing, JavaFX & SWT 2
R Textfield lässt sich nicht positionieren AWT, Swing, JavaFX & SWT 1
B JavaFX ListView in Kombination mit TextField AWT, Swing, JavaFX & SWT 5
B JavaFX TextField Eingabe in neues Fenster übernehmen AWT, Swing, JavaFX & SWT 4
L JavaFX Ich suche das passende Textfield Event AWT, Swing, JavaFX & SWT 1
Bluedaishi JavaFX JFoenix TextField KeyEvent AWT, Swing, JavaFX & SWT 2
F JavaFX Aktuelle Zeit in einem TextField anzeigen AWT, Swing, JavaFX & SWT 7
F JavaFX textField Ausgabe automatisch kopieren AWT, Swing, JavaFX & SWT 7
M JavaFX String aus TextField reagiert nicht wie erwartet AWT, Swing, JavaFX & SWT 3
S JavaFX TextField auf Datentyp prüfen AWT, Swing, JavaFX & SWT 1
M JavaFX .setCellFactory () mit TextField AWT, Swing, JavaFX & SWT 4
L TextField Listener AWT, Swing, JavaFX & SWT 13
L TextField Eingabe in andere GUI übernehmen AWT, Swing, JavaFX & SWT 1
C JavaFX mit .setText() befülltes Textfield liefert anschließend mit .getText() den ursprünglichen Wert? AWT, Swing, JavaFX & SWT 1
K JavaFX Combobox, Textfield & setOnMouseClicked AWT, Swing, JavaFX & SWT 2
U Java FX Warten auf Textfield eingabe AWT, Swing, JavaFX & SWT 17
G JavaFX - Während AudioRecording keine Text eingabe TextField möglich AWT, Swing, JavaFX & SWT 6
S Buttons und TextField automatisch vergrößern AWT, Swing, JavaFX & SWT 8
Y Listview Textfield vergrößern, Schrift anpassen AWT, Swing, JavaFX & SWT 0
S AWT Daten über TextField und Button in array speichern AWT, Swing, JavaFX & SWT 5
U Eingabe von TextField in variable speichern AWT, Swing, JavaFX & SWT 2
J Eigene Klasse auf Basis Textfield in SceneBuilder anzeigen AWT, Swing, JavaFX & SWT 4
I JavaFX TextField auf Eingabe prüfen AWT, Swing, JavaFX & SWT 3
D JavaFX Nur Zahlen in Textfield AWT, Swing, JavaFX & SWT 4
D Textfield bei starten füllen. AWT, Swing, JavaFX & SWT 5
H Textfield bleibt im Hintergrund AWT, Swing, JavaFX & SWT 2
C JavaFX Zugriff auf TextField aus einer anderen Klasse AWT, Swing, JavaFX & SWT 4
P LayoutManager TextField.setSize(); in einem FlowLayout AWT, Swing, JavaFX & SWT 3
T Internes Event-handling in TextField/JTextField AWT, Swing, JavaFX & SWT 2
O Swing Text aus Textfield auslesen AWT, Swing, JavaFX & SWT 8
1 Textfield: jede Buchstabe ein Bild AWT, Swing, JavaFX & SWT 2
U Swing NullPointerException trotz Referenz auf Textfield & Button AWT, Swing, JavaFX & SWT 6
S LayoutManager TextField verschwindet / wird klein AWT, Swing, JavaFX & SWT 4
S Button in Textfield ziehen AWT, Swing, JavaFX & SWT 4
T Einen Variablen Wert in einem TextField AWT, Swing, JavaFX & SWT 4
F Swing TextField Eingabe in Variable umwandeln um zum Beispiel zu rechnen. AWT, Swing, JavaFX & SWT 3
G JavaFX TextField Eingabe formatieren/einschränken AWT, Swing, JavaFX & SWT 2
C Integer in ein Textfield schreiben. AWT, Swing, JavaFX & SWT 4
P TextField beim klicken von JButton speichern AWT, Swing, JavaFX & SWT 17
C Swing TextField auslesen AWT, Swing, JavaFX & SWT 21
MiMa Integer Zahl in Textfield ausgeben AWT, Swing, JavaFX & SWT 12
K Per Textfield Methode ausführen AWT, Swing, JavaFX & SWT 6
B JComboBox ans Textfield gelangen AWT, Swing, JavaFX & SWT 4
A Größe von Textfield bestimmen AWT, Swing, JavaFX & SWT 9
S JButton und textfield.setText - Komponenten über-/verdecken sich AWT, Swing, JavaFX & SWT 15
T jPanels im jFrame bewegen - Auch ohne Textfield? AWT, Swing, JavaFX & SWT 4
B AWT Mit TextField Zahlen einlesen lassen AWT, Swing, JavaFX & SWT 34
R Textfield auslesen auf Anforderung AWT, Swing, JavaFX & SWT 4
A Button und Textfield AWT, Swing, JavaFX & SWT 4
A TextField und Label AWT, Swing, JavaFX & SWT 8
H gui textfield AWT, Swing, JavaFX & SWT 5
A TextField: Textfeld teilweise editierbar AWT, Swing, JavaFX & SWT 2
R TextField auslesen & in Objekteigenschaften speichern AWT, Swing, JavaFX & SWT 22
E Button in TextField eibetten? AWT, Swing, JavaFX & SWT 4
Screen Focus Problem , KeyListener, TextField , Key AWT, Swing, JavaFX & SWT 4
W textfield zentriert AWT, Swing, JavaFX & SWT 2
N Swing Textfield listener AWT, Swing, JavaFX & SWT 2
H Zeich in einem TextField farblich markieren?! AWT, Swing, JavaFX & SWT 5
D Swing [BoxLayout] Nur TextArea und nicht TextField vergroessen AWT, Swing, JavaFX & SWT 2
D Textfield auswerten AWT, Swing, JavaFX & SWT 4
M Swing InputVerifer auf TextField AWT, Swing, JavaFX & SWT 14
B setText() auf TextField mit Document AWT, Swing, JavaFX & SWT 2
G Problem mit Textfield AWT, Swing, JavaFX & SWT 2
G Den Inhalt von einem Textfield aktualisieren AWT, Swing, JavaFX & SWT 6
D Inhalt von Textfield nach ComboBox AWT, Swing, JavaFX & SWT 2
E Swing Button ActionListener Infos aus Textfield und ComboBox AWT, Swing, JavaFX & SWT 3
G TextField im Hintergrund AWT, Swing, JavaFX & SWT 2
Z TextField aus ActionListener von JButton verändern AWT, Swing, JavaFX & SWT 10
O ComboBox hinter TextField? AWT, Swing, JavaFX & SWT 8
T Checkbox & Textfield AWT, Swing, JavaFX & SWT 5
M Beschränkung auf Nur-Zahleneingabe in Textfield klappt nicht AWT, Swing, JavaFX & SWT 3
N Textfield feste größe? AWT, Swing, JavaFX & SWT 1
M Datum Textfield AWT, Swing, JavaFX & SWT 6
S TextField fehler AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben