JTextField mit MaxLimit u. Integerval. gleichzeitig? Wie?

  • Themenstarter Themenstarter madman
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
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




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);
        }
    }
}
 
Hallo André,

vielen Dank für deinen Tipp. Dachte nicht das es so "einfach" geht.

Viele Grüße
Mike
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben