2013-11-27 3 views
1

в этой части моего кода, я создаю объект класса Dizionario и записываю его в файл, сначала вызываю конструктор, принимая 3 параметра (Path, String, int). Я получаю эти 3 параметра от 3 JTextField и частичном, последний (jTextField3) создает эту ошибку, преобразование в целоеNumberFormatException при попытке конвертировать JTextField в int

Это ошибка:

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "javax.swing.JTextField[,62,11,302x28,layout=javax.swing.plaf.basic.BasicTextUI$UpdateHandler,alignmentX=0.0,alignmentY=0.0,[email protected],flags=288,maximumSize=,minimumSize=,preferredSize=,caretColor=,disabledTextColor=DerivedColor(color=142,143,145 parent=nimbusDisabledText offsets=0.0,0.0,0.0,0 pColor=142,143,145,editable=true,margin=javax.swing.plaf.InsetsUIResource[top=0,left=0,bottom=0,right=0],selectedTextColor=DerivedColor(color=255,255,255 parent=nimbusSelectedText offsets=0.0,0.0,0.0,0 pColor=255,255,255,selectionColor=DerivedColor(color=57,105,138 parent=nimbusSelectionBackground offsets=0.0,0.0,0.0,0 pColor=57,105,138,columns=0,columnWidth=0,command=,horizontalAlignment=LEADING]" 
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) 
at java.lang.Integer.parseInt(Integer.java:492) 
at java.lang.Integer.<init>(Integer.java:677) 

Я попробовал эти куски кода преобразовать строку в целое число:

int i = new Integer(jTextField3.toString()); 

, а затем положить i в качестве параметра (или непосредственно призывающую новый Integer (...) в качестве параметра)

(int)JTextField3.toString(); 

Integer.ParseInt(JTextField3.toString()); 

и вот мой метод

private void CreateMouseClicked(java.awt.event.MouseEvent evt) {          
    Dizionario dic = new Dizionario(
      (Paths.get(jTextField2.toString())), 
      jTextField1.toString(), 
      Integer.parseInt(jTextField3.toString())); 
    dic.writeToFile(); 
} 
+0

* «NumberFormatException при попытке конвертировать JTextField в int» * betterApproach = 'JSpinner' +' SpinnerNumberModel'. –

ответ

4

гм, это не jTextField3.toString(), это jTextField3.getText(). Это большая разница, и чтобы увидеть, что возвращает toString(), посмотрите на свое сообщение об ошибке. Вы пытаетесь разобрать это:

"javax.swing.JTextField[,62,11,302x28,layout=javax.swing.plaf.basic.BasicTextUI$UpdateHandler,alignmentX=0.0,alignmentY=0.0,[email protected],flags=288,maximumSize=,minimumSize=,preferredSize=,caretColor=,disabledTextColor=DerivedColor(color=142,143,145 parent=nimbusDisabledText offsets=0.0,0.0,0.0,0 pColor=142,143,145,editable=true,margin=javax.swing.plaf.InsetsUIResource[top=0,left=0,bottom=0,right=0],selectedTextColor=DerivedColor(color=255,255,255 parent=nimbusSelectedText offsets=0.0,0.0,0.0,0 pColor=255,255,255,selectionColor=DerivedColor(color=57,105,138 parent=nimbusSelectionBackground offsets=0.0,0.0,0.0,0 pColor=57,105,138,columns=0,columnWidth=0,command=,horizontalAlignment=LEADING]" 

В число.

+0

но почему бы мне не получить ошибки в первом и втором параметрах? – maxpesa

+1

@maxpesa Зачем вам? 'getText' и' toString' возвращают 'String', что касается компилятора, то они являются правильными параметрами для метода ... компилятор не может догадаться, каков будет результат вызова ... – MadProgrammer

+0

@maxpesa : потому что это строки. Вы должны проверить строки, которые вы получаете в инструкции println, чтобы убедиться в этом сами. –

2

Не используйте JTextField#toString, используйте JTextField#getText вернуть текстовое содержимое текстового поля, к примеру ...

int i = new Integer(jTextField3.getText()); 

toString, как правило, используется для получения полезной диагностической информации о Object

Смежные вопросы