Hallo, ich hab ein kleines Problem, ich hab folgendes Programm in BlueJ geschrieben:
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class eingabe extends Dialog implements WindowListener, KeyListener
{
/**
* Konstruktor für Objekte der Klasse ein
*/
public eingabe(Frame frm)
{
super(frm,„test“, true);
addWindowListener(this);
setLayout(new GridLayout(0,1));
Panel Eingabe = new Panel();
TextField eing = new TextField(7);
eing.addKeyListener(this);
Eingabe.add(eing);
add(Eingabe);
}
public void keyPressed(KeyEvent e)
{
char key = e.getKeyChar();
if(!Character.isDigit(key))
{
e.consume();
}
}
public void keyReleased(KeyEvent e){}
public void keyTyped(KeyEvent e){}
public void windowActivated(WindowEvent e){}
public void windowClosed(WindowEvent e){}
public void windowDeactivated(WindowEvent e){}
public void windowDeiconified(WindowEvent e){}
public void windowIconified(WindowEvent e){}
public void windowOpened(WindowEvent e){}
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
Wenn ich das TextField verwende funktioniert die Methode „e.consume“. Wenn ich aber das ganze auf Swing umschreiben möchte und dann JTextField verwende, funktioniert sie nicht mehr. Eigentlich soll man in dem Textfeld nur Zahlen eingeben können, bei javax.swing lässt e.consume() dann aber alles durch, auch Buchtstaben. Kann mir jemand von euch helfen, wie ich trotzdem die nichtZahlen herausfiltern kann, sodass sie nicht im JTextField erscheinen?
Über eine Antwort würde ich mich sehr freuen
Manfred