JTextField - Inhalt markieren

J

Java_Neuling

Morgen,

ich habe folgendes Problem ich würde gern den Inhalt eines TextFields markieren wenn der User auf diesen klickt. Dazu hab ich mir gedacht ich benutzte einen MouseListener der auch so weit funktioniert das einzige wo's scheitert ist das ich keine Ahnung hab wie ich den Inhalt eines TextFields markieren kann UND ich eine Menge TextFields hab und nicht für jeden einen eigenen MouseListener schreiben will sondern einen MouseListener an alle TextFields hängen will.

Vllt sollte ich noch sagen warum ich den Inhalt markieren will das es klar wird was ich vor hab, also wenn der Benutzer schon mal was in das TextField eingegeben hat und dies ändern will soll er es nicht er löschen müssen... es soll schon markiert sein das wenn eine neue Eingabe kommt die alte sozusagen überschrieben wird.

MfG
Java Neuling
 
Warum löst du es nicht einfach so, dass du den Text löschst? Wenn er letztendlich "nur" überschireben werden soll, kannst du es doch so machen, dass, wenn man ins Textfeld klickt, der Text gelöscht wird durch .setText(""). Ist doch dasselbe und sehr viel weniger Aufwand ;)
 
Daran hab ich auch schon gedacht aber ist doch nicht schönste Lösung oder? :D wenn man einmal ins falsche TextField klickt ist der Inhalt weg ist ja auch irgendwie unsicher... aber wenn mir keiner helfen kann wird mir wohl nix anderes übrig bleiben...

MfG
Java_Neuling
 
Naja... wofür genau soll das denn sein? Wenn es zum Beispiel ne Art Userprofil ist, ist das schon ne recht gute Lösung, da du die Inhalte der Felder sicher in irgendwelchen Variablen gespeichert hast. Dann könnte man ganz leicht die Eingabe zurückholen. Naja, aber vll gibts ja auch noch ne bessere Lösung. Je nachdem wofür du es genau brauchst
 
Ja eigentlich ist deine lösung schon gut nur mir ist halt aufgefallen das man sich auch mit der TAB-Taste durch die TextFelder bewegen kann dann wäre erstens jedes Feld gelöscht wo man drin ist auch wenn man es nicht ändern will... darum wäre mir markieren lieber so kann man es überspringen ohne das der Inhalt verloren geht oder ändern ohne erst löschen zu müssen :)
 
Moin,

warum setzt Du nicht einfach den Hintergrund eines Textfeldes auf eine bestimmte Farbe,
wenn es angeklickt wird.

Du mußt nur die Klasse

import java.awt.Color; importieren und kannst dann mit

JTextField vorname = new JTextField(15);
vorname.setBackground(Color.blue);

einen Hintergrund setzen. Das könnte bei der richtigen Farbe ganz elegant aussehen.


VG
 
Hallo,

warum machst du es nicht einfach mit einem FocusListener?

Die Methoden zum selektieren heißen
Code:
setSelectionStart()
und
Code:
setSelectionEnd()

Schau mal hier
Code:
package de.tutorials.swing;

import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;

@SuppressWarnings("serial")
public class TextFieldFocusExample extends JFrame {

	private JTextField actTextField = null;

	public TextFieldFocusExample() {

		setSize(300, 300);

		setLayout(new GridLayout(6, 0));

		setDefaultCloseOperation(EXIT_ON_CLOSE);

		for (int i = 0; i < 5; i++) {
			JTextField tf = new JTextField();
			tf.setDragEnabled(true);
			tf.addFocusListener(new FocusAdapter() {

				private Color selectionColor = new Color(255, 255, 191);

				public void focusGained(FocusEvent e) {

					if (actTextField != null)
						actTextField.setBackground(Color.WHITE);
					actTextField = (JTextField) e.getSource();
					actTextField.setBackground(selectionColor);
					actTextField.setSelectionStart(0);
					actTextField.setSelectionEnd(actTextField.getText().length());
				}

			});
			add(tf);
		}

		JButton button = new JButton("Ausgabe");

		button.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent e) {
				System.out.println(actTextField.getText());
			}

		});

		add(button);

	}

	public static void main(String[] args) {
		new TextFieldFocusExample().setVisible(true);
	}

}

MFG

zEriX
 
Zurück