2015-03-15 4 views
0

У меня проблема с моей программой. Я пытаюсь поместить целое число в текстовое поле. Это мой код:Целое число не отображается в текстовом поле

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 
import java.awt.event.MouseEvent.*; 

public class GradingSystem extends JFrame{ 

    public GradingSystem(){ 
     super("Grading System"); 
     JLabel pre = new JLabel ("PRELIM GRADE: "); 
     final JTextField pre1 = new JTextField(10); 
     JLabel mid = new JLabel("MIDTERM GRADE: "); 
     final JTextField mid1 = new JTextField(10); 
     JLabel fin = new JLabel ("FINAL GRADE: "); 
     final JTextField fin1 = new JTextField(10); 
     JLabel ave = new JLabel("AVERAGE: "); 
     final JTextField ave1 = new JTextField(10); 
     JButton calculate = new JButton("CALCULATE"); 
     FlowLayout flo = new FlowLayout(); 
     setLayout(flo); 
     add(pre); 
     add(pre1); 
     add(mid); 
     add(mid1); 
     add(fin); 
     add(fin1); 
     add(ave); 
     add(ave1); 
     add(calculate); 
     setSize(315,150); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setVisible(true); 

     calculate.addActionListener(new ActionListener(){ 

      public void actionPerformed(ActionEvent e){ 
       try{ 
        int i1 = Integer.parseInt(pre1.getText()); 
        int i2 = Integer.parseInt(mid1.getText()); 
        int i3 = Integer.parseInt(fin1.getText()); 
        int i4 = Integer.parseInt(ave1.getText()); 

        i4 = (i1 + i2 + i3)/3; 


        ave1.setText(String.valueOf(i4)); 
       }catch(Exception ex){ 

       } 
      } 

     }); 



    } 

    public static void main(String[] a){ 
     GradingSystem gs = new GradingSystem(); 
    } 

} 

Я пытаюсь иметь ave1.setText(String.valueOf(i4)); появиться в текстовом поле, но это не будет.
Что я делаю неправильно?

+0

Вставьте в свой код, сохраните его и нажмите Ctrl + K, что отстутнет на 4 пробела и покажет его в прозвище. Всегда задавайте прямой вопрос, с ответами, которые помогут вам. (Q: «Что я буду делать ребятам», A: «Узнайте другую работу, кроме программирования»). Не отвлекайтесь, нет chit-chat (читайте [help → tour] (http://stackoverflow.com/tour)), поэтому спасибо ** никогда ** не следует включать в хороший пост. – Anthon

+0

Рассмотрите возможность использования JSpinner или JFormattedTextField, который имеет возможность проверять и преобразовывать текст в int – MadProgrammer

ответ

1

Ваша проблема эта линия.

int i4 = Integer.parseInt(ave1.getText()); 

Предположительно, при нажатии кнопки «Вычислить», нет никакого значения в ave1 еще, так что эта линия будет сгенерировано исключение, и никогда не будет достигнута линия под ним.

Удалите эту строку из своего кода и добавьте слово int к строке под ней.

int i4 = (i1 + i2 + i3)/3; 

Как правило, пустой улов блока, например, как один, который вы используете

catch(Exception ex){ 

} 

это действительно плохая идея; потому что это означает, что вы не видите, в чем проблема, когда возникает исключение. Никогда не делай этого.

+0

Спасибо, человек. Да, я забыл поставить 'ex.printStackTrace(),' man. Простите за это. – jhenryj09

0

Вы увидите значение в текстовом поле только при нажатии кнопки «Вычислить». Вы заполняете это текстовое поле только при нажатии кнопки «Вычислить», поскольку на этой кнопке вы определили прослушиватель действий.

Если вам нужно по умолчанию значение говорят 10, то вы могли бы сделать что-то вроде:

final JTextField ave1 = new JTextField("10");//or not yet calculated or something on those lines 

С целочисленного параметра Java док говорит:

Constructs a new empty <code>TextField</code> with the specified 
* number of columns. 
* A default model is created and the initial string is set to 
* <code>null</code>. 
* 
* @param columns the number of columns to use to calculate 
* the preferred width; if columns is set to zero, the 
* preferred width will be whatever naturally results from 
* the component implementation 
*/ 
+0

Да. Но он не появится в текстовом поле. – jhenryj09

+0

Тогда я предлагаю вам сделать '} catch (Exception ex) {ex.printStackTrace(); } 'в вашем слушателе, поскольку я полагаю, что вы не можете поставлять целое число, и вы можете в итоге сказать NumberFormatException. – SMA

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