Eingabe in Textfeld soll Button aktivieren...

XFlipX

Aktives Mitglied
Hallo,

habe folgendes Problem:

Ich habe einen Settings-Dialog, in dem verschiedene Einstellungen vorgenommmen werden können. Im unteren Teil des Dialogs befinden sich 3 Buttons (O.K.|Cancel|Apply)

O.K-Button -> Übernahme der Einstellungen und Schließen des Dialogs
Cancel-Button -> keine Übernahme und Schließen des Dialogs
Apply-Button -> nur Übernahme der Einstellungen

....mit Übernahme meine ich, die Einstellungen werden in der Registry abgespeichert.

Der Apply-Button is standardmäßig inaktiv -> er soll erst aktiv werden, wenn Einstellungen neu gesetzt wurden (Neusetzen von Text in den Textfeldern / Einträge in die Tabelle vorgenommen wurden)

Meine Frage, gibt es dafür einen speziellen Listener von JTextField, der mir bescheid gibt, wenn Text eingegeben wurde bzw. neu gesetzt wurde ?

Danke,XFlipX

Ps.: Noch nachträglich ein frohes neues Jahr!
 

javimka

Top Contributor
Du könntest einen KeyListener verwenden. Erstelle einen einzigen und hänge ihn jedem Textfeld an. Wenn irgendwo eine Taste gedrückt wird, wird der Listener sofoort ausgelöst und du kannst deinen Button aktivieren.
 

XFlipX

Aktives Mitglied
Danke für den Tipp - es ist nur so, dass bei manchen TextFeldern der Text vom Nutzer nicht direkt eingetippt wird, sondern der Nutzer wählt über einen Datei/Verzeichniss-Auswahl-Dialog entsprechend aus und der ausgewählte Pfad wird als Text ins Textfeld gesetzt.

XFlipX
 

javimka

Top Contributor
Dann könntest du z.B. eine neue Klasse machen, die von TextField erbt und setTest überschreibt und darin dann macht, was du willst.

Noch besser, wenn es möglich ist, wäre wohl, weitere Listener den AuswahlDialogen anzuhängen.

Aber wenn durch solch einen Dialog eine Auswahl gemacht wird, musst du dort doch sowieso etwas gecoded haben, was dann wirklich den Text im Textfeld setzt. Dort kannst du ja auch gleich noch einprogrammieren, dass der Button aktiviert wird.
 
G

Gast2

Gast
Hallo,

habe folgendes Problem:

Ich habe einen Settings-Dialog, in dem verschiedene Einstellungen vorgenommmen werden können. Im unteren Teil des Dialogs befinden sich 3 Buttons (O.K.|Cancel|Apply)

O.K-Button -> Übernahme der Einstellungen und Schließen des Dialogs
Cancel-Button -> keine Übernahme und Schließen des Dialogs
Apply-Button -> nur Übernahme der Einstellungen

....mit Übernahme meine ich, die Einstellungen werden in der Registry abgespeichert.

Der Apply-Button is standardmäßig inaktiv -> er soll erst aktiv werden, wenn Einstellungen neu gesetzt wurden (Neusetzen von Text in den Textfeldern / Einträge in die Tabelle vorgenommen wurden)

Meine Frage, gibt es dafür einen speziellen Listener von JTextField, der mir bescheid gibt, wenn Text eingegeben wurde bzw. neu gesetzt wurde ?

Danke,XFlipX

Ps.: Noch nachträglich ein frohes neues Jahr!

du kannst auf das Textfeld einen DocumentListener registrieren der sagt dir ob etwas inserted oder
removed wurde...
 

Dit_

Bekanntes Mitglied
Hallo
ist es möglich in einer Klasse mit mehreren TextFeldern einen DocumentListener zu verwenden?

bei ActionListener kann ich ja unterscheiden zB so:

Java:
@Override
	public void actionPerformed(ActionEvent e) {
		if (e.getSource().equals(saveButton)) {
			save();

		} else if (e.getSource().equals(cancelButton)) {
			closeWindow();
		}
	}

Mit DocumentListener geht das nicht, konnte im Netz keine Lösung finden... hat jemand nen Tipp für mich?

Danke schon mal!
 
G

Gast2

Gast
Weiß zwar nicht für was du es brauchst, kannst ja einfach für jedes Textfeld einen eigenen anonymen Listener erstellen ist doch kein Problem? Oder was spricht dagegen?
 

Dit_

Bekanntes Mitglied
na ja in einem Programm kann ich ein Fenster Einstellungen aufrufen. ZB wenn ich Tab "Verbindung und Passwörter" auswaehle, so habe ich 8 TextFelder mit UserName, Pw, proxy usw. wenn der User eine Eintrag ändert muss doch mein Feld irgendwie reagieren.

Wenn ich für alle extra Listener anlege dann sind es 8 x 3 neue Methoden die zusätzlich implementiert werden müssen. Mit einem könnte ich halt alle kompakt implementieren.

Aber wenn es nicht so leicht wie beim ActionListener geht dann muss ich wohl doch anonyme Listener implementieren..
 
G

Gast2

Gast
na ja in einem Programm kann ich ein Fenster Einstellungen aufrufen. ZB wenn ich Tab "Verbindung und Passwörter" auswaehle, so habe ich 8 TextFelder mit UserName, Pw, proxy usw. wenn der User eine Eintrag ändert muss doch mein Feld irgendwie reagieren.

Wenn ich für alle extra Listener anlege dann sind es 8 x 3 neue Methoden die zusätzlich implementiert werden müssen. Mit einem könnte ich halt alle kompakt implementieren.

Aber wenn es nicht so leicht wie beim ActionListener geht dann muss ich wohl doch anonyme Listener implementieren..

Versteh ich nicht warum du 8*3 neue Metoden machen musst... Kannst du ein Bsp machen?
Du hast halt 8 annoyme Listener die 8 mal die gleiche Methode ausführen... Ansonsten hättest du halt 8 ifs oder ein kompaktes if die jedes mal die gleiche Methode aufrufen???:L...

du könntest eventuell mit
Code:
e.getDocument
abfragen welches Textfeld gerade an der Reihe ist...
 

Dit_

Bekanntes Mitglied
ok Beispiel

Java:
ipFieldSettings = new JTextField();
ipFieldSettings.getDocument().addDocumentListener(new DocumentListener() {
				private void checkIt(){
					if (serverIPOld != ipFieldSettings.getText()) {
						macheWas();
					} else {
						macheWasAnderes();
					}
				}
				@Override
				public void removeUpdate(DocumentEvent e) {
					checkIt();
				}
				
				@Override
				public void insertUpdate(DocumentEvent e) {
					checkIt();
				}
				
				@Override
				public void changedUpdate(DocumentEvent e) {}
			});


portFieldSettings = new JTextField();
portFieldSettings.getDocument().addDocumentListener(new DocumentListener() {
				
				private void checkIt(){
					
						if (ftpPortOld != portFieldSettings.getText()) {
								macheWas();
					} else {
						macheWasAnderes();
					}
				}
				
				
				@Override
				public void removeUpdate(DocumentEvent e) {
					checkIt();
					
				}
				
				@Override
				public void insertUpdate(DocumentEvent e) {
					checkIt();
				}
				
				@Override
				public void changedUpdate(DocumentEvent e) {}
...
pwSettings = new JTextField();
...
usw...
 
G

Gast2

Gast
ok Beispiel

Java:
ipFieldSettings = new JTextField();
ipFieldSettings.getDocument().addDocumentListener(new DocumentListener() {
				private void checkIt(){
					if (serverIPOld != ipFieldSettings.getText()) {
						macheWas();
					} else {
						macheWasAnderes();
					}
				}
				@Override
				public void removeUpdate(DocumentEvent e) {
					checkIt();
				}
				
				@Override
				public void insertUpdate(DocumentEvent e) {
					checkIt();
				}
				
				@Override
				public void changedUpdate(DocumentEvent e) {}
			});


portFieldSettings = new JTextField();
portFieldSettings.getDocument().addDocumentListener(new DocumentListener() {
				
				private void checkIt(){
					
						if (ftpPortOld != portFieldSettings.getText()) {
								macheWas();
					} else {
						macheWasAnderes();
					}
				}
				
				
				@Override
				public void removeUpdate(DocumentEvent e) {
					checkIt();
					
				}
				
				@Override
				public void insertUpdate(DocumentEvent e) {
					checkIt();
				}
				
				@Override
				public void changedUpdate(DocumentEvent e) {}
...
pwSettings = new JTextField();
...
usw...

Ja gut und was wär der Unterschied wenn du rausfinden könntest welches textfeld es wäre?
 

Dit_

Bekanntes Mitglied
zB so:

Java:
@Override
                public void removeUpdate(DocumentEvent e) {
                        // e => changedObjekt             
              
                    if(changedObject.equals(ipFieldSettings){
                       if (serverIPOld != ipFieldSettings.getText()) {
                          macheWas();
                       } else {
                          macheWasAnderes();
                       }

                    } else if (changedObject.equals(portFieldSettings ){
                       ...
                    }
                    
                }
                
                @Override
                public void insertUpdate(DocumentEvent e) {
                    removeUpdate(e);
                }
                
                @Override
                public void changedUpdate(DocumentEvent e) {}

So hätte ich halt alles in einem Listener und könnte in meiner Klasse implements DocumentListener einfügen.
 
G

Gast2

Gast
zB so:

Java:
@Override
                public void removeUpdate(DocumentEvent e) {
                        // e => changedObjekt             
              
                    if(changedObject.equals(ipFieldSettings){
                       if (serverIPOld != ipFieldSettings.getText()) {
                          macheWas();
                       } else {
                          macheWasAnderes();
                       }

                    } else if (changedObject.equals(portFieldSettings ){
                       ...
                    }
                    
                }
                
                @Override
                public void insertUpdate(DocumentEvent e) {
                    removeUpdate(e);
                }
                
                @Override
                public void changedUpdate(DocumentEvent e) {}

So hätte ich halt alles in einem Listener und könnte in meiner Klasse implements DocumentListener einfügen.

Naja erkenn jetzt keinen gravierenden Vorteil .Du hast jede Menge ifs drin...
Also ich würde 1. in diesem Listener nie auf das Textfeld zugreifen dafür gibts die methode e.getDocument().getText()...
Und 2tens mir außerhalb die checkMethode machen und zwar check(String,Document)
und dann kann diese Methode jeder Listener verwenden und gut ist... und wenn dann auch noch die 2 methoden machWas und machWasAnderes für alle gleich sind dann ist es ja perfekt...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Textfeld Programm soll auf Eingabe warten! AWT, Swing, JavaFX & SWT 4
P Variable einer Eingabe in anderes Textfeld schreiben AWT, Swing, JavaFX & SWT 7
V Swing Eingabe aus Textfeld abholen AWT, Swing, JavaFX & SWT 6
D JavaFX Textfeld Eingabe validieren AWT, Swing, JavaFX & SWT 5
maddin86 Eingabe in Textfeld 1 synchron in Textfeld 2 ausgeben AWT, Swing, JavaFX & SWT 9
M Prüfen, ob in einem Textfeld/Tabelle eine Eingabe erfolgt is AWT, Swing, JavaFX & SWT 11
B Textfeld, Rollbaken: Eingabe klappt nicht AWT, Swing, JavaFX & SWT 2
A JOptionPane OK ohne Eingabe abfangen AWT, Swing, JavaFX & SWT 10
B JavaFX TextField Eingabe in neues Fenster übernehmen AWT, Swing, JavaFX & SWT 4
F AWT awt KeyEvent - Zeichen direkt nach Eingabe löschen AWT, Swing, JavaFX & SWT 2
G Eingabe in JTextField in Array speichern und in JList ausgeben AWT, Swing, JavaFX & SWT 7
G JTextField Eingabe in DB speichern AWT, Swing, JavaFX & SWT 68
F JavaFX Tabelle mit gespeicherten Eingabe Werten AWT, Swing, JavaFX & SWT 8
J JTable: Eingabe in Tabellenzelle korrigieren AWT, Swing, JavaFX & SWT 4
L PasswordField Eingabe verstecken AWT, Swing, JavaFX & SWT 2
R jTextField Eingabe überprüfen AWT, Swing, JavaFX & SWT 2
L TextField Eingabe in andere GUI übernehmen AWT, Swing, JavaFX & SWT 1
E Eingabe von Zahlen in TextArea AWT, Swing, JavaFX & SWT 2
A Prüfung einer Eingabe auf Gleitkommazahl AWT, Swing, JavaFX & SWT 5
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
P JTable - bei Eingabe Selektion AWT, Swing, JavaFX & SWT 0
U Eingabe von TextField in variable speichern AWT, Swing, JavaFX & SWT 2
D JavaFX Eingabe im GUI AWT, Swing, JavaFX & SWT 5
I JavaFX TextField auf Eingabe prüfen AWT, Swing, JavaFX & SWT 3
F JavaFX JavaFX HTMLEditor-Eingabe in Textarea als HTML anzeigen AWT, Swing, JavaFX & SWT 2
G Swing ComboBox: Auswahl eines Items der Liste durch Eingabe eines Buchstabens AWT, Swing, JavaFX & SWT 3
F Event Handling JTextArea auf bestimmte Eingabe reagieren (Return-Taste) AWT, Swing, JavaFX & SWT 2
J Text bei Eingabe löschen AWT, Swing, JavaFX & SWT 5
A JTable Cell Eingabe AWT, Swing, JavaFX & SWT 6
X Eingabe in einem Ausgabefeld anzeigen lassen AWT, Swing, JavaFX & SWT 11
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
S Swing JFormattedTextField - bei nicht korrekter Eingabe Inhalt überschreiben AWT, Swing, JavaFX & SWT 5
J Swing JButton durch Eingabe von Zahlen in JTextFields aktivieren AWT, Swing, JavaFX & SWT 3
C Swing JTextfield hängt sich bei Eingabe auf AWT, Swing, JavaFX & SWT 6
A Auf eingabe warten AWT, Swing, JavaFX & SWT 5
R JTextField Eingabe bestimmen AWT, Swing, JavaFX & SWT 5
S JTable - Auf spezielle Eingabe nicht reagieren. AWT, Swing, JavaFX & SWT 5
N Filternde Combobox in JTable verliert Fokus nach erster Eingabe AWT, Swing, JavaFX & SWT 2
M Swing Eingabe auf JTextField automatisch ausgeben auf JLabel AWT, Swing, JavaFX & SWT 2
M Swing JTable cell leeren bei Eingabe AWT, Swing, JavaFX & SWT 6
N Eingabe JTextfield überprüfen AWT, Swing, JavaFX & SWT 3
earlgrey_tea KeyEvent reagiert nicht auf Eingabe ("Pausentaste") AWT, Swing, JavaFX & SWT 11
T Tooltip bei falscher Eingabe anzeigen AWT, Swing, JavaFX & SWT 2
S SWT Wie bei Widget Text auf int prüfen bei Eingabe AWT, Swing, JavaFX & SWT 5
J Eingabe im JTextField übermitteln AWT, Swing, JavaFX & SWT 6
P Swing Einfache Eingabe in JTextfield wird nicht ausgegeben AWT, Swing, JavaFX & SWT 3
B Pop-Up eingabe für Zahlen AWT, Swing, JavaFX & SWT 5
B Eingabe von JTextField verwenden AWT, Swing, JavaFX & SWT 10
S Eingabe Überprüfung AWT, Swing, JavaFX & SWT 4
S JTable: Eingabe nur für bestimmte Var.Typen zulassen AWT, Swing, JavaFX & SWT 13
P jframe eingabe durch button AWT, Swing, JavaFX & SWT 2
S Swing Auf Enter - Eingabe reagieren AWT, Swing, JavaFX & SWT 10
U Swing Eingabe von JTextField in einen String übergeben. AWT, Swing, JavaFX & SWT 3
eskimo328 JTable nächste Zelle nach Eingabe einer Ziffer AWT, Swing, JavaFX & SWT 5
A Eingabe in JFrame AWT, Swing, JavaFX & SWT 4
aze JTextField Eingabe verbergen AWT, Swing, JavaFX & SWT 14
A Die Eingabe in einem JTextField beschränken AWT, Swing, JavaFX & SWT 5
R JTextField Eingabe speichern AWT, Swing, JavaFX & SWT 4
G JTable - bei falscher Eingabe wird alter Wert genommen. AWT, Swing, JavaFX & SWT 2
N JFormattedTextField erst Verlassen, wenn Eingabe korrekt AWT, Swing, JavaFX & SWT 6
N Eingabe eines Textfields weiterverwenden AWT, Swing, JavaFX & SWT 6
A Bei Eingabe eines Datums ein Kalender aufpoppen lassen AWT, Swing, JavaFX & SWT 2
H Adressbuch - Problem beim Speichern der Eingabe AWT, Swing, JavaFX & SWT 5
hdi JTextField - Eingabe verschlüsselt anzeigen AWT, Swing, JavaFX & SWT 2
M JFileChooser-> eingabe Vorgeben AWT, Swing, JavaFX & SWT 7
M jTextField mit Eingabe beschränken AWT, Swing, JavaFX & SWT 4
V Start Button und Wert Eingabe in ein Fenster AWT, Swing, JavaFX & SWT 2
M JTable: TableCellEditor nach Eingabe sofort beenden? AWT, Swing, JavaFX & SWT 3
S JTextField - Eingabe speichern AWT, Swing, JavaFX & SWT 2
I Tastur eingabe geht nicht (wenn Button vorhanden) AWT, Swing, JavaFX & SWT 5
C jComboBox während eingabe kontextabhängig vorausfüllen AWT, Swing, JavaFX & SWT 3
V JTextField - Mehrfachselektion und Eingabe möglich? AWT, Swing, JavaFX & SWT 2
G Eingabe auslesen mit JOptionPane AWT, Swing, JavaFX & SWT 2
I Prüfen einer Eingabe in JTextField, Fokusverlust AWT, Swing, JavaFX & SWT 2
sparrow JComboBox soll Selektion anhand der Eingabe ändern AWT, Swing, JavaFX & SWT 2
S Eingabe des Textfeldes in Variable speichern AWT, Swing, JavaFX & SWT 7
H Eingabe von Zahlen in JTable und Fokusweitergabe AWT, Swing, JavaFX & SWT 4
C JTextField Eingabe prüfen AWT, Swing, JavaFX & SWT 4
L JTextField verweigert die Eingabe AWT, Swing, JavaFX & SWT 6
M JTextField nach erfolgreicher Eingabe leeren? AWT, Swing, JavaFX & SWT 2
W Auf eine Eingabe warten? AWT, Swing, JavaFX & SWT 2
R JTable, automatischer resize der Zellen nach einer Eingabe AWT, Swing, JavaFX & SWT 4
M Position von Eingabe-Fenster AWT, Swing, JavaFX & SWT 5
G GUI - Inhalte wechseln (Eingabe-Assistenten programmieren) AWT, Swing, JavaFX & SWT 2
G Textfeldgröße während Eingabe ändern AWT, Swing, JavaFX & SWT 4
Z immer Problem mit Eingabe durch JTextField und JTree AWT, Swing, JavaFX & SWT 7
J JTextfield Eingabe einschränken AWT, Swing, JavaFX & SWT 4
S Eingabe einschränken bei TextField AWT, Swing, JavaFX & SWT 19
D Intelligente Eingabe AWT, Swing, JavaFX & SWT 3
W Auf Eingabe von Return reagieren AWT, Swing, JavaFX & SWT 4
F Eingabe in JPasswordField auf vier Zeichen beschränken AWT, Swing, JavaFX & SWT 3
chik Java Komponente mit formatierter Eingabe? AWT, Swing, JavaFX & SWT 5
D Button und Textfeld Darstellung AWT, Swing, JavaFX & SWT 3
B Scene Builder Textfeld Begrenzen AWT, Swing, JavaFX & SWT 3
T JavaFX MultiLine / MultiStyle Textfeld AWT, Swing, JavaFX & SWT 1
izoards Textfeld für Zeit AWT, Swing, JavaFX & SWT 4
E Frage zum Textfeld AWT, Swing, JavaFX & SWT 8
B Ausgaben einer Umrechnung vom Textfeld in ein Label AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben