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 ?