M
madman
Gast
Hallo,
ich versuch gerade ein JTextField mit einem Eingabelimit (8 Stellen) zu versehen. Darüber hinaus sollen nur ganze Zahlen eingegeben werden können. Bis jetzt hab ich 2 Klassen die das bewerkstelligen. Aber als ich versuchte dem eingabeFeld über setDocument das Ganze klarzumachen, war nur JTextFieldLimit wirksam. Leider versteh ich nicht den Grund dafür.
Gibt es eine Möglichkeit einem JTextField diese Eigenschaften mitzugeben? Könnte man alles in einer Klasse bewerkstelligen?
Vielen Dank!
Gruß
Mike
ich versuch gerade ein JTextField mit einem Eingabelimit (8 Stellen) zu versehen. Darüber hinaus sollen nur ganze Zahlen eingegeben werden können. Bis jetzt hab ich 2 Klassen die das bewerkstelligen. Aber als ich versuchte dem eingabeFeld über setDocument das Ganze klarzumachen, war nur JTextFieldLimit wirksam. Leider versteh ich nicht den Grund dafür.
Gibt es eine Möglichkeit einem JTextField diese Eigenschaften mitzugeben? Könnte man alles in einer Klasse bewerkstelligen?
Vielen Dank!
Gruß
Mike
Code:
public class Eingabe extends JApplet implements ActionListener
{
JTextField eingabeFeld;
JLabel label;
public void init()
{
Container contentPane = getContentPane();
contentPane.setLayout(new GridLayout(2,2));
label = new JLabel("Nummer eingeben:");
eingabeFeld = new JTextField("");
eingabeFeld.setDocument(new JTextFieldInterger());
eingabeFeld.setDocument(new JTextFieldLimit(8));
contentPane.add(label);
contentPane.add(eingabeFeld);
setSize(360, 500);
}
public void actionPerformed(ActionEvent ae)
{
}
}
class JTextFieldInterger extends PlainDocument {
public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
try {
Integer.parseInt(str);
super.insertString(offs, str, a);
} catch (NumberFormatException e) {
Toolkit.getDefaultToolkit().beep();
}
}
}
class JTextFieldLimit extends PlainDocument {
private int limit;
private boolean toUppercase = false;
JTextFieldLimit(int limit) {
super();
this.limit = limit;
}
JTextFieldLimit(int limit, boolean upper) {
super();
this.limit = limit;
toUppercase = upper;
}
public void insertString (int offset, String str, AttributeSet attr) throws BadLocationException {
if (str == null) return;
if ((getLength() + str.length()) <= limit) {
if (toUppercase) str = str.toUpperCase();
super.insertString(offset, str, attr);
}
}
}