Frage

Kann mir bitte jemand helfen ... Ich habe alle möglichen Dinge ausprobiert (einschließlich hierhilfe hier) und das funktioniert einfach nicht. Ich verwende JFormattedTextField mit einer Maskformatter, um die Dateneingabe auf 4 (maximale) Ziffern zu beschränken.

    static JFormattedTextField textPayout;

    MaskFormatter f;
try {
    f = new MaskFormatter("####");
} catch (ParseException e) {
    e.printStackTrace();
    return; // actual code not written yet.
}
textPayout = new JFormattedTextField(f);

Das Problem ist, dass es weder Zeichen noch Länge einschränkt (auch die Texte überlappen sich, wenn eine Nichtnummer eingegeben wird). Und ich habe eine Vielzahl von maskenähnlichen Operationen ausprobiert. Kann mir bitte jemand sagen, was ich falsch mache?

Vielen Dank

War es hilfreich?

Lösung

Ich habe gerade diesen Code ausprobiert und es hat mit einem kleinen Problem gut funktioniert:

class A extends JFrame {
    public static void main(String args[]) throws ParseException {
        A a = new A();
        a.setLayout(new GridLayout());
        JFormattedTextField textField =
                new JFormattedTextField(new MaskFormatter("####"));
        a.add(textField);
        a.add(new JButton("qwe"));
        a.setSize(300,50);
        a.setVisible(true);
    }
}

Das Problem ist, dass zunächst ein Textfeld mit 4 Leerzeichen gefüllt ist, also musste ich sie löschen. Wahrscheinlich ist das Gentoo kompilierte Icedtea 7.2 Verrücktheit.

Ansonsten funktioniert alles gut, können Sie meinen Code ausprobieren und wenn es nicht funktioniert, wie lautet Ihre Java -Version dann?

Andere Tipps

Der einfachste Weg wäre addiert Dokumentieren zum JFormattedTextfield mit Number formatter, oder ein anderer Weg ist mit add DocumentListener, zum Beispiel

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top