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 (toTest);  
         }
         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);
   }
}

Eigene Werkzeuge
Werkzeuge

gratis Counter by GOWEB
seit 9.10.2007