Dies ist eine alte Version des Dokuments!
JTextField, begrenzen auf numerische Eingabe
Im folgenden Code-Beisiel werden nur numerische Eingaben akzeptiert:
Dazu wird ein eigenes Document „NumberDocument“ definiert.
package com.sowas.snippets.jtextfield; import javax.swing.text.BadLocationException; import javax.swing.text.PlainDocument; import javax.swing.text.AttributeSet; import java.math.BigDecimal; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class NumberDocument extends PlainDocument { @override public void insertString (final int offset, final String text, final AttributeSet attributeSet) throws BadLocationException { if (isNumber(text)){ super.insertString (offset, text, attributeSet); } } protected boolean isNumber (final String text) { try { if (text.length() > 0){ // Versuchen eine Zahl zu erzeugen: new BigDecimal(text); } return true; }catch (final NumberFormatException e){ // Hat nicht geklappt, also keine Zahl } return false; } public static void main (final String [] ignored){ JFrame frame = new JFrame ("Numerisches JTextField"); frmae.getContentPane().setLayout (new BorderLayout (0,0)); frame.getContentPane().add(new JTextField (new NumberDocument (), "", 0), BorderLayout.NORTH); frame.pack (); frame.setVisible (true); } }