Die Eingabe in einem JTextField beschränken

Status
Nicht offen für weitere Antworten.

Alex_winf01

Top Contributor
Hallo liebe Forengemeinde,

wie kann ich die Eingabe in einem JTextField beschränken? Ich habe ein Textfeld, da sollen nur Eingaben wie z. B. 1.0 oder 10.1 oder 100.1 erlaubt sein. Wie kann ich das realisieren? Es soll immer nur eine Stelle nach dem Punkt eingegeben werden können.
 

musiKk

Top Contributor
Vermutlich geht das mit einem Listener, der das bei der Eingabe ständig prüft. Bei einem JTextField ist das wohl ein DocumentListener auf dem Document des Textfeldes. In den Java Tutorials von Sun gibts auch Informationen.
 

Alex_winf01

Top Contributor
@ musiKk

Mit dem Listener hab ich verstanden. Aber wie höhre ich einfach nach dem 1. Wert nach dem Punkt auf? z. B. 1.1 ist zulässig, 1.12 nicht mehr?
 
G

Gast2

Gast
Und warum nicht Variante 2 ohne Listener?

Java:
public class Test extends JFrame {

    public Test() {

        DecimalFormat format = (DecimalFormat) NumberFormat.getNumberInstance(Locale.US);
        
        format.setMaximumIntegerDigits(100);
        format.setMaximumFractionDigits(1);
        format.setGroupingUsed(false);
       
        CNumberFormatter formatter = new CNumberFormatter(format);
        JFormattedTextField formattedTextField = new JFormattedTextField();
        formattedTextField.setFormatterFactory(new DefaultFormatterFactory(formatter));
        formatter.setAllowsInvalid(false);
formatter.setValueClass(Double.class);
       
        
        add(formattedTextField);
        pack();
        setLocationRelativeTo(null);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        setVisible(true);
    }

    public class CNumberFormatter extends NumberFormatter {

        private DecimalFormat format;
        private int oldFracMin;
        private int textLength;

        public CNumberFormatter(DecimalFormat format) {
            super(format);
            this.format = format;
            oldFracMin = format.getMinimumFractionDigits();
        }

        @Override
        public Object stringToValue(String text) throws ParseException {

            if (text.trim().length() > 0 && !text.equals(format.getNegativePrefix()) && !format.isParseIntegerOnly()) {
                int index = text.indexOf(format.getDecimalFormatSymbols().getDecimalSeparator());
                if (index == text.length() - 1 && textLength <= text.length()) {

                    format.setMinimumFractionDigits(format.getMaximumFractionDigits());
                } else {
                    format.setMinimumFractionDigits(oldFracMin);
                }
            }
            textLength = text.length();
            return text.trim().length() == 0 || text.equals(format.getNegativePrefix()) ? null : super.stringToValue(text);
        }

        @Override
        public String valueToString(Object value) throws ParseException {

            String text = value == null ? "" : super.valueToString(value);
            return text;
        }
    }


    public static void main(String[] args) throws IOException {
        new Test();
    }

}

Falls irgendwas nicht passt oder sich falsch verhält musst die stringToValue methode abändern les dir einfach mal den link druch eventuell gehts noch einfacher...
aber solang das formatter.setAllowsInvalid(false); gesetzt ist kannst du keine falschen eingaben machen eigentlich auch kein punkt darum hab ich die mthode überschrieben...
wenn du formatter.setAllowsInvalid(true); kannst du falsche eingaben machen, ABER wenn du enter oder den fokus verlierst validiert das Textfeld und macht das richtige ergebnis dann brauchst du den formatter überhaupt nicht...
Je nachdem was du brauchst und wie es dir besser gefällt.
 
Zuletzt bearbeitet von einem Moderator:

musiKk

Top Contributor
Mit setText() die ungültige Eingabe immer wieder überschreiben oder so, aber schau Dir mal den Link von SirWayne an, das sieht geeigneter aus.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
X Eingabe in einem Ausgabefeld anzeigen lassen AWT, Swing, JavaFX & SWT 11
M Prüfen, ob in einem Textfeld/Tabelle eine Eingabe erfolgt is AWT, Swing, JavaFX & SWT 11
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
P Variable einer Eingabe in anderes Textfeld schreiben AWT, Swing, JavaFX & SWT 7
E Eingabe von Zahlen in TextArea AWT, Swing, JavaFX & SWT 2
V Swing Eingabe aus Textfeld abholen AWT, Swing, JavaFX & SWT 6
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
D JavaFX Textfeld Eingabe validieren AWT, Swing, JavaFX & SWT 5
A JTable Cell Eingabe AWT, Swing, JavaFX & SWT 6
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
maddin86 Eingabe in Textfeld 1 synchron in Textfeld 2 ausgeben AWT, Swing, JavaFX & SWT 9
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
X Eingabe in Textfeld soll Button aktivieren... AWT, Swing, JavaFX & SWT 12
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
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
B Textfeld, Rollbaken: Eingabe klappt nicht AWT, Swing, JavaFX & SWT 2
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
K Textfeld Programm soll auf Eingabe warten! AWT, Swing, JavaFX & SWT 4
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
M Seltsame Exception bei setVisible(true) Methode in einem JFrame AWT, Swing, JavaFX & SWT 2
MartinNeuerlich Kann mir jemand, der einen Mac mit einem m1 oder m2-Chip hat, eine POM geben mit der Javafx-Fullscreen beim Mac mit m-Chip funktioniert? AWT, Swing, JavaFX & SWT 1
W 2 JTables in einem Swing-Fenster? AWT, Swing, JavaFX & SWT 5
J JavaFx PDF in einem Element in einem Fenster anzeigen. AWT, Swing, JavaFX & SWT 11
Mojo7310 Ändern von Text in JLabel mit einem Button AWT, Swing, JavaFX & SWT 11
I JTable mit einem Button zu einer Detail Seite springen AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben