Swing JFormattedTextfield markiert nicht gesamten Inhalt

Skrodde

Aktives Mitglied
Hallo zusammen,
ich habe mir eine Klasse von
Code:
JFormattedTextField
abgeleitet, in der ich direkt im Constructor einen Focus Listener setze, welcher den gesamten Text markieren soll, sobald der Focus an das Feld geht. Hier die Klasse:
Java:
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.text.Format;

import javax.swing.JFormattedTextField;
import javax.swing.JTextField;

public class JFormattedTextFieldHA extends JFormattedTextField {

	public JFormattedTextFieldHA() {
		setFocusListener();
	}

	public JFormattedTextFieldHA(Object arg0) {
		super(arg0);
		setFocusListener();
	}

	public JFormattedTextFieldHA(Format arg0) {
		super(arg0);
		setFocusListener();
	}

	public JFormattedTextFieldHA(AbstractFormatter arg0) {
		super(arg0);
		setFocusListener();
	}

	public JFormattedTextFieldHA(AbstractFormatterFactory arg0) {
		super(arg0);
		setFocusListener();
	}

	public JFormattedTextFieldHA(AbstractFormatterFactory arg0, Object arg1) {
		super(arg0, arg1);
		setFocusListener();
	}

	private void setFocusListener() {
		FocusListener focus_highlightAll = new FocusListener() {
			@Override
			public void focusGained(FocusEvent arg0) {
				((JTextField)arg0.getComponent()).selectAll();
			}
			@Override
			public void focusLost(FocusEvent arg0) {	
			}
		};
		this.addFocusListener(focus_highlightAll);
	}

}

Wenn ich nun folgende main-Methode ausführe:

Java:
public static void main(String[] args) throws Exception {
		
		JFrame testFrame = new JFrame( );
		testFrame.setLayout( new FlowLayout() );		
		JFormattedTextFieldHA formatted1 = new JFormattedTextFieldHA(NumberFormat.getInstance());
		formatted1.setText("formatted1");
		testFrame.add( formatted1 );
		JFormattedTextFieldHA formatted2 = new JFormattedTextFieldHA(NumberFormat.getInstance());
		formatted2.setText("formatted2");
		testFrame.add( formatted2 );
		testFrame.pack();
		testFrame.setVisible(true);
		}
Dann klappt das markieren beim ersten Mal anwählen ganz gut, allerdings habe ich noch folgendes Problem: Gibt es Nutzer eine Zahl ein und klickt erneut in das Textfeld, wird rein gar nichts mehr markiert ;(
Kann mir jemand von euch sagen, woran das liegt?
Danke, Gruß, Skrodde
 

Michael...

Top Contributor
Grundsätzlich sollte man von einer Klasse nur erben, wenn man deren Funktionsumfang erweitert. Bei einer Registrierung eines FocusListeners, der das Focusverhalten ändert, ist das m.M. nicht unbedingt gerechtfertigt. Egal.

Zum eigentlichen Problem: vermutlich beieinflusst des Setzen des Formatters ebenfalls das Focus Verhalten. Eine Lösung dazu weis ich allerdings auch nicht.
 
S

SlaterB

Gast
so sieht eine Methode in JFormattedTextField aus:
Java:
    /**
     * Processes any focus events, such as
     * <code>FocusEvent.FOCUS_GAINED</code> or
     * <code>FocusEvent.FOCUS_LOST</code>.
     *
     * @param e the <code>FocusEvent</code>
     * @see FocusEvent
     */
    protected void processFocusEvent(FocusEvent e) {
        super.processFocusEvent(e);

	// ignore temporary focus event
	if (e.isTemporary()) {
	    return;
	}

        if (isEdited() && e.getID() == FocusEvent.FOCUS_LOST) {
	    InputContext ic = getInputContext();
	    if (focusLostHandler == null) {
		focusLostHandler = new FocusLostHandler();
	    }
	    
	    // if there is a composed text, process it first
	    if ((ic != null) && composedTextExists) {
		ic.endComposition();
		EventQueue.invokeLater(focusLostHandler);
	    } else {
		focusLostHandler.run();
	    }
        }
        else if (!isEdited()) {
            // reformat
            setValue(getValue(), true, true);
        }
    }
der Text wird evtl. nach deinem selectAll() nochmal neu gesetzt und die Selektion geht verloren,
habs noch nicht ganz durchdrungen, ein PropertyChangeEvent in setValue() gibt es wohl doch nicht,

mit nochmaligen Überschreiben:
Java:
    protected void processFocusEvent(FocusEvent e)
    {
        super.processFocusEvent(e);
        System.out.println("nach pfe");
        selectAll();
    }
in deiner Klasse klappt es aber glaube ich, dann kannst du deinen FocusListener, der eh zu früh drankommt, wohl einsparen
 

Skrodde

Aktives Mitglied
Grundsätzlich sollte man von einer Klasse nur erben, wenn man deren Funktionsumfang erweitert. Bei einer Registrierung eines FocusListeners, der das Focusverhalten ändert, ist das m.M. nicht unbedingt gerechtfertigt. Egal.

Ich habe mir folgendes dabei gedacht: Ich setze in unterschiedlichen Klassen in meinem Code immer wieder vereinzelt Textfelder ein, bei denen ich dieses "markiere beim Fokus alles" Feature gerne hätte. Wenn ich nun an jeder Stelle im Code hingehe, einen Focus-Listener erzeuge, konfiguriere und setze, dann ist das wesentlich unlesbarer Code, als wenn ich direkt eine neue Klasse mit diesem Feature ausrüste.
Oder gibt es da eine bessere Lösung?

mit nochmaligen Überschreiben:
Java:
    protected void processFocusEvent(FocusEvent e)
    {
        super.processFocusEvent(e);
        System.out.println("nach pfe");
        selectAll();
    }
in deiner Klasse klappt es aber glaube ich, dann kannst du deinen FocusListener, der eh zu früh drankommt, wohl einsparen

So funktioniert es wunderbar :toll: Vielen Dank!
 
S

SlaterB

Gast
Oder gibt es da eine bessere Lösung?

die allgemeine Alternative ist eine Factory,

ob du nun
JTextField x = new MyFocusField();
oder
JTextField x = Gui.createFocusField();
schreibst, macht kaum Unterschied,

schlimm ist eine Vererbung aber auch nicht, im Zweifel später auch noch gut zu korrigieren,
für den Moment nun ja eh nötig ;)
wobei noch eine anonyme geerbte Klasse in der statischen Methode auch ginge
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F JFormattedTextField für kg und Währung AWT, Swing, JavaFX & SWT 6
S JFormattedTextField dezimal variabler Länge AWT, Swing, JavaFX & SWT 12
Ghostman1711 Java JFormattedTextfield MaskFormatter ohne Leerzeichen AWT, Swing, JavaFX & SWT 3
N Swing JFormattedTextField keine Werte nach Formatzuweisung AWT, Swing, JavaFX & SWT 0
M European Article Number (EAN) in JFormattedTextfield AWT, Swing, JavaFX & SWT 3
L JFormattedTextField AWT, Swing, JavaFX & SWT 3
B Swing JFormattedTextField AWT, Swing, JavaFX & SWT 4
Y JFormattedTextfield - Aktualisierung und Beschränkung AWT, Swing, JavaFX & SWT 4
V Swing Nullpointer Exception bei JFormattedTextField AWT, Swing, JavaFX & SWT 4
S Swing JFormattedTextField - bei nicht korrekter Eingabe Inhalt überschreiben AWT, Swing, JavaFX & SWT 5
C Swing Button in Textfeld (JFormattedTextField) AWT, Swing, JavaFX & SWT 7
A jformattedtextfield unsichtbar und wieder sichtbar machen AWT, Swing, JavaFX & SWT 13
C Swing JFormattedTextField + Eurobetrag AWT, Swing, JavaFX & SWT 2
E Problem mit MaskFormatter und JFormattedTextField AWT, Swing, JavaFX & SWT 3
A EventListener für JFormattedTextField AWT, Swing, JavaFX & SWT 6
B Swing Betrag mit Komma aus jformattedtextfield auslesen. AWT, Swing, JavaFX & SWT 2
E Swing JFormattedTextField Live Validierung AWT, Swing, JavaFX & SWT 4
C Swing Default Werte für JFormattedTextField und Eingaben zurücksetzen AWT, Swing, JavaFX & SWT 5
G JFormattedTextField und DefaultButton AWT, Swing, JavaFX & SWT 6
B Swing JFormattedTextField auf mehreren JPanels in einer JTabbedPane AWT, Swing, JavaFX & SWT 3
G JFormattedTextField values AWT, Swing, JavaFX & SWT 8
R JFormattedTextField AWT, Swing, JavaFX & SWT 8
D Eingabemaske im JFormattedTextField ändern AWT, Swing, JavaFX & SWT 3
D JFormattedTextfield um Grafik erweitern AWT, Swing, JavaFX & SWT 15
N JFormattedTextField erst Verlassen, wenn Eingabe korrekt AWT, Swing, JavaFX & SWT 6
G JFormattedTextField lässt sich nicht mehr leeren AWT, Swing, JavaFX & SWT 4
N PropertyChangeListener an JFormattedTextField AWT, Swing, JavaFX & SWT 7
D Problem mit JFormattedTextField AWT, Swing, JavaFX & SWT 6
A Problem mit JFormattedTextField auslesen AWT, Swing, JavaFX & SWT 11
S JFormattedTextField und maximal 3 Stellen. AWT, Swing, JavaFX & SWT 11
M JFormattedTextField und Null-Werte AWT, Swing, JavaFX & SWT 4
E JformattedTextField, Dialog und weitere Kleinigkeiten . AWT, Swing, JavaFX & SWT 2
E Problem mit Validierende Eingabefeldern JFormattedTextField AWT, Swing, JavaFX & SWT 8
B JFormattedTextField mit DecimalFormat in ein Double AWT, Swing, JavaFX & SWT 11
C JFormattedTextField - nur bestimmte Zeichen zulassen AWT, Swing, JavaFX & SWT 3
H JFormattedTextField - Einen Preis eingeben lassen AWT, Swing, JavaFX & SWT 2
B Zeichen werden im JFormattedTextField überschrieben AWT, Swing, JavaFX & SWT 3
H JFormattedTextField AWT, Swing, JavaFX & SWT 4
W IP-Adresse mit JFormattedTextField AWT, Swing, JavaFX & SWT 5
F JFormattedTextField formatieren AWT, Swing, JavaFX & SWT 7
J [JFormattedTextField] Nur Zahlen eingebbar AWT, Swing, JavaFX & SWT 3
S [JFormattedTextField] Ja wie denn nun? AWT, Swing, JavaFX & SWT 2
G Datumseingabe mit JFormattedTextField AWT, Swing, JavaFX & SWT 4
B Wert bei JFormattedTextField automatisch aktualisieren AWT, Swing, JavaFX & SWT 2
H Frage zu JFormattedTextField AWT, Swing, JavaFX & SWT 2
G Problem mit JFormattedTextField AWT, Swing, JavaFX & SWT 3
M Datumseingabe in ein JFormattedTextfield AWT, Swing, JavaFX & SWT 2
F Problem mit JFormattedTextField AWT, Swing, JavaFX & SWT 4
A JFormattedTextField - vertical misalignment problems... AWT, Swing, JavaFX & SWT 12
B JavaFX habe mein Problem fett markiert AWT, Swing, JavaFX & SWT 2
G JTree Element wird nicht markiert AWT, Swing, JavaFX & SWT 2
R JTable immer nur die letzte Spalte markiert.... AWT, Swing, JavaFX & SWT 4
K JTable - ganze Zeile soll nicht markiert werden AWT, Swing, JavaFX & SWT 2
D JTable: Focus auf Zelle markiert ihren Text zum editieren AWT, Swing, JavaFX & SWT 2
D JTable - Wie markiert man den Zellinhalt beim Editeren ? AWT, Swing, JavaFX & SWT 10
T in einer Table soll jede zweite Zeile markiert werden AWT, Swing, JavaFX & SWT 3
Juelin if Abfrage funktioniert nicht richtig AWT, Swing, JavaFX & SWT 10
MiMa Darstellung von FXML ateien nicht korrekt (SceneBuilder) AWT, Swing, JavaFX & SWT 2
P Methode wird nicht überprüft AWT, Swing, JavaFX & SWT 4
C Button ActionListener funktioniert nicht AWT, Swing, JavaFX & SWT 1
M Mandelbrot mit BigDecimal erstellen und in der UI zeichnen, funktionierte nicht. AWT, Swing, JavaFX & SWT 1
H JavaFX PixelWriter.setColor setzt Farbe nicht AWT, Swing, JavaFX & SWT 2
M JavaFX Diagonale Linie nicht ausgegeben/angezeigt AWT, Swing, JavaFX & SWT 1
M JavaFX Mandelbrot-bild noch nicht optimiert AWT, Swing, JavaFX & SWT 7
Hatsi09 Javafx MediaPlayer spielt nicht immer AWT, Swing, JavaFX & SWT 3
P thread nimmt veränderte boolean nicht AWT, Swing, JavaFX & SWT 7
P Animation läuft nicht korrekt AWT, Swing, JavaFX & SWT 8
P AWT Programm funktioniert nicht richtig AWT, Swing, JavaFX & SWT 35
P JTextField wird nur sehr klein angezeigt und verändert die Größe nicht AWT, Swing, JavaFX & SWT 3
Telisti Javafx Image wird nicht richtig integiert AWT, Swing, JavaFX & SWT 8
J Netbeans die JavaFX-Anwendung wird nicht ausgeführt AWT, Swing, JavaFX & SWT 16
thor_norsk Icons laden nicht in GUI AWT, Swing, JavaFX & SWT 15
N €-Zeichen wird nicht akzeptiert AWT, Swing, JavaFX & SWT 4
tommybalbor JavaFx Anwendung klappt nicht für macOs Nutzern, wenn ich zwei dependecies bei maven hinzufüge AWT, Swing, JavaFX & SWT 6
G JOptionPane zeigt nicht an was ich will AWT, Swing, JavaFX & SWT 2
S JavaFX WebView zeigt bestimmte Websites nicht an AWT, Swing, JavaFX & SWT 2
R auto. Importanweisungen für javafx funktioniert in Eclipse nicht mehr AWT, Swing, JavaFX & SWT 4
berserkerdq2 Anchorpane warum kann ich nicht Anchors setzen AWT, Swing, JavaFX & SWT 6
komplettlost Vollbildmodus für MacOs Nutzer geht nicht AWT, Swing, JavaFX & SWT 13
M Scrollbar funktioniert nicht AWT, Swing, JavaFX & SWT 10
D Repaint Funktioniert nicht AWT, Swing, JavaFX & SWT 2
W JEditorPane textausrichtung nach settext funktioniert nicht mehr AWT, Swing, JavaFX & SWT 11
H JList.setEnabled(false) - Text soll nicht grau sein AWT, Swing, JavaFX & SWT 2
_user_q Objekt.setSelected(false), wenn es nicht mehr fokussiert wird AWT, Swing, JavaFX & SWT 2
sserio JFrame setIconImmage() funktioniert nicht AWT, Swing, JavaFX & SWT 3
R Fxml findet controller nicht AWT, Swing, JavaFX & SWT 2
D Swing Komponenten nicht sichtbar nach Start AWT, Swing, JavaFX & SWT 12
frager2345 Warum paintComponent hier und nicht paint AWT, Swing, JavaFX & SWT 2
_user_q [JavaFX] Spinner so einstellen, dass er nicht leer bleiben darf? AWT, Swing, JavaFX & SWT 6
T Swing Tooltip-Delay funktioniert nicht immer. AWT, Swing, JavaFX & SWT 1
J Programm findet Resource nicht. AWT, Swing, JavaFX & SWT 6
S Javafx getResource-Pfad wird nicht erkannt AWT, Swing, JavaFX & SWT 7
B Swing Menü geht nicht AWT, Swing, JavaFX & SWT 5
B Bild lädt nicht AWT, Swing, JavaFX & SWT 2
princess_sara1997 .jar Datei führt den Code nicht richtig aus AWT, Swing, JavaFX & SWT 19
S Ich bringe Code mit JavaFX unter Apache NetBeans IDE 12.6 nicht zum laufen. AWT, Swing, JavaFX & SWT 14
U Code doch nicht austauschbar in 2DGraphics AWT, Swing, JavaFX & SWT 2
P JavaFX Änderungen am Datenmodell visuell nicht sichtbar AWT, Swing, JavaFX & SWT 3
M JavaFX kann man da noch was am code vereinfachen design technisch sieht nicht richtig aus... AWT, Swing, JavaFX & SWT 15
S ChoiceBox aus ArrayList per setValue() mit Wert belegen funktioniert nicht. AWT, Swing, JavaFX & SWT 0

Ähnliche Java Themen

Neue Themen


Oben