JFormattedTextField i NumberFormat : błąd rzutowania

0

W programie mam pole JFormattedTextField, do którego chciałbym żeby użytkownicy podawali liczby całkowite i to najlepiej max. 3-cyfrowe.

Kod, który miał to zapewnić (tak mi się wydawało) wygląda następująco:

...
NumberFormat numbFormat = NumberFormat.getIntegerInstance();
numbFormat.setMaximumIntegerDigits(3);
keyValueField = new JFormattedTextField(numbFormat);
keyValueField.setBounds(140, 80, 40, 25);
keyValueField.setValue(1);
...

wartości podane w tym polu są potem wykorzystywane w pewnej funkcji jako jej argument, w ten sposób:

...
key = (Integer)mainPanel.keyValueField.getValue();
txtArea.setText(cryptographer.encode(txtArea.getText(), key));
...

Kiedy powyższa funkcja wywoływana jest z początkowo ustawioną wartością pola keyValueField, czyli 1, wszystko działa. Kiedy jednak tylko wpiszę wartość ręcznie wówczas wywalany jest błąd: java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Integer.

Będę wdzięczny za odpowiedzi na poniższe pytania :) :

Czemu dzieje się to (błąd z rzutowaniem) tylko po ręcznym podaniu wartości, a wcześniej nie ?
Jak to obejść ?
Na czym polega wstawiona linijka: numbFormat.setMaximumIntegerDigits(3); skoro itak mogę podać tylę cyfr ile mi się podoba ?

1

Napisz może czym jest cryptographer.

MaskFormatter mask = new MaskFormatter("###");
mask.setValidCharacters("0123456789");
JFormattedTextField tf = new JFormattedTextField(mask);
0

Wprowadziłem Twój kod, ale nie wiem czy to działa ponieważ nie mogę teraz ręcznie wprowadzić żadnej liczby. Cały czas znajduje się tam ta domyślna 1-ka i nie mogę tego skasować / zmienić z poziomu GUI.
cryptographer jest obiektem małej klasy zawierającej tylko 2 metody - szyfrującą i odszyfrowującą tekst za pomocą prostego szyfru przesunięcia (key), odpowiednio:

public String encode(String txt, int key) {...}
public String decrypt(String cypher, int key) {...}

1
tf.setText("1");
...
key = Integer.parseInt(mainPanel.keyValueField.getText());

1 użytkowników online, w tym zalogowanych: 0, gości: 1