doch keine keylistener

keeepa

Mitglied
Hallo Mädels und Jungs,
hatte ja vorhin schon mal geschrieben! Die Frage von mir wurde richtig beantwortet! Nochmal vielen Dank dafür.
Irgendwie ist der Keylistener doch nicht das richtige für mich! Ich möchte ein Textfeld so erweitern "extend" , das eine Fehlermeldung ausgegebenm wird, wenn jemand z.B. einen Buchstaben einträgt. Es sollen nur Integer akzeptiert werden. Und ich möchte das direkt bei der Eingabe überprüfen. Hat jemand eine Idee für mich wie ich das realisieren kann. Oder kann mir jemand sagen, welches der bessere Listener wäre?

Vielen Dank
 
Hallo Keeepa,

java bietet da viele Möglichkeiten. Hier mal zwei Alternativen:

Java:
import java.awt.BorderLayout;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

import javax.swing.*;
import javax.swing.text.DefaultFormatterFactory;
import javax.swing.text.NumberFormatter;

public class NumberFieldExample extends JFrame {

	private JNumberField nf = new JNumberField(this);

	private JNumberField2 nf2 = new JNumberField2(this);

	public NumberFieldExample() {
		super("NumberFieldExample");
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setLocationByPlatform(true);
		this.add(nf, BorderLayout.NORTH);
		this.add(nf2, BorderLayout.SOUTH);
		this.pack();
		this.setVisible(true);
	}

	public static void main(String[] args) {
		new NumberFieldExample();
	}

	class JNumberField extends JTextField {
		private String content = "";

		public JNumberField(final JFrame parent) {
			this.addKeyListener(new KeyAdapter() {
				public void keyTyped(KeyEvent e) {
					content = JNumberField.this.getText();
					// Nur Ziffern
					if (!Character.isDigit(e.getKeyChar())) {
						e.consume();
						JOptionPane.showMessageDialog(parent,
								"Bitte geben sie einen Zahl ein.",
								"Fehlermeldung", JOptionPane.ERROR_MESSAGE);
					}
				}
			});
		}
	}

	class JNumberField2 extends JFormattedTextField {
		private String content = "";

		public JNumberField2(JFrame parent) {
			NumberFormatter nfor = new NumberFormatter();
			nfor.setAllowsInvalid(false);
			DefaultFormatterFactory dff = new DefaultFormatterFactory(nfor);
			this.setFormatterFactory(dff);
		}
	}
}


Vg Erdal
 

Neue Beiträge

Zurück