KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > de > webman > wminstaller > tools > WholeNumberField


1 package de.webman.wminstaller.tools;
2
3 import javax.swing.*;
4 import javax.swing.text.*;
5
6 import java.awt.Toolkit JavaDoc;
7 import java.text.NumberFormat JavaDoc;
8 import java.text.ParseException JavaDoc;
9 import java.util.Locale JavaDoc;
10
11 public class WholeNumberField
12     extends JTextField
13 {
14     private Toolkit JavaDoc toolkit;
15     private NumberFormat JavaDoc integerFormatter;
16     
17     public WholeNumberField(int value, int columns) {
18         super(columns);
19         toolkit = Toolkit.getDefaultToolkit();
20         integerFormatter = NumberFormat.getNumberInstance(Locale.US);
21         integerFormatter.setParseIntegerOnly(true);
22         setValue(value);
23     }
24
25     public int getValue() {
26         int retVal = 0;
27         try {
28             retVal = integerFormatter.parse(getText()).intValue();
29         }
30         catch (ParseException JavaDoc e) {
31             // This should never happen because insertString allows
32
// only properly formatted data to get in the field.
33
toolkit.beep();
34         }
35         return retVal;
36     }
37
38     public void setValue(int value) {
39         setText(integerFormatter.format(value));
40     }
41
42     protected Document createDefaultModel() {
43         return new WholeNumberDocument();
44     }
45
46     protected class WholeNumberDocument extends PlainDocument {
47         public void insertString(int offs,
48                                  String JavaDoc str,
49                                  AttributeSet a)
50                 throws BadLocationException {
51             char[] source = str.toCharArray();
52             char[] result = new char[source.length];
53             int j = 0;
54             
55             for (int i = 0; i < result.length; i++) {
56                 if (Character.isDigit(source[i]))
57                     result[j++] = source[i];
58                 else {
59                     toolkit.beep();
60                 }
61             }
62             super.insertString(offs, new String JavaDoc(result, 0, j), a);
63         }
64     }
65 }
66
67
Popular Tags