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