2016-06-13 12 views
0

私は2つの数字を追加してそれをJLabelに示す単純な電卓のプログラムを書こうとしています。私は作業ウィンドウ、ボタンなどを設計することができました。しかし、スレッドの例外ボタンをクリックした場合"AWT-EventQueue-0" java.lang.NullPointerException - エラーが発生し、解決方法がわかりません。ここで Java:スレッド「AWT-EventQueue-0」の例外java.lang.NullPointerException?

はコードです:

import java.awt.EventQueue; 

public class Rechnerwin { 

private JFrame frame; 
private JTextField textFielda; 
private JTextField textFieldb; 
private JLabel label; 
int A; 
int B; 
int C; 
String a; 
String b; 
String c; 


public static void main(String[] args) { 
    EventQueue.invokeLater(new Runnable() { 
     public void run() { 
      try { 
       Rechnerwin window = new Rechnerwin(); 
       window.frame.setVisible(true); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
    }); 
} 

public Rechnerwin() { 

    initialize(); 
} 


private void initialize() { 
    frame = new JFrame(); 
    frame.setBounds(100, 100, 450, 300); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.getContentPane().setLayout(null); 

    textFielda = new JTextField(); 
    textFielda.setBounds(44, 41, 86, 20); 
    frame.getContentPane().add(textFielda); 
    textFielda.setColumns(10); 

    textFieldb = new JTextField(); 
    textFieldb.setBounds(307, 41, 86, 20); 
    frame.getContentPane().add(textFieldb); 
    textFieldb.setColumns(10); 

    JButton btnAdd = new JButton("Add"); 
    btnAdd.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 

      String a = textFielda.getText(); 
      String b = textFieldb.getText(); 
      int A = Integer.parseInt(a); 
      int B = Integer.parseInt(b); 
      int C = A + B; 
      String c = Integer.toString(C); 
      label.setText(c); 
     } 
    }); 
    btnAdd.setBounds(169, 85, 89, 23); 
    frame.getContentPane().add(btnAdd); 

    JLabel label = new JLabel("a"); 
    label.setBounds(146, 184, 131, 20); 
    frame.getContentPane().add(label); 
    } 
} 
+1

あなたがISの前に頼まれたことを認め、あなたがされていることがわかっている場合は?どうしてあなたはまだそれに頼んだのですか?前の回答を読んでください – Li357

+1

http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it – Michael

+0

私がテキストで述べたように私は解決策を探しましたが、何かを見つけられない、それは私を助けることができる。 – DerMaksi

答えて

0

ボタンにリスナーの前にラベルを移動してみ

例:

JLabel label = new JLabel("a"); 
label.setBounds(146, 184, 131, 20); 
frame.getContentPane().add(label); 

JButton btnAdd = new JButton("Add"); 
btnAdd.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent e) { 

    String a = textFielda.getText(); 
    String b = textFieldb.getText(); 
    int A = Integer.parseInt(a); 
    int B = Integer.parseInt(b); 
    int C = A + B; 
    String c = Integer.toString(C); 
    label.setText(c); 
    } 
    }); 
0

問題はおそらくリスナーにあなたがしようということですRechnerwinクラスのメンバーlabelのテキストを設定します。しかし、このメンバは決して初期化されません。ボタンリスナーをアタッチした後、新しい JLabelをメンバーに同じ名前のUIに追加しますlabel。しかし、これらは2つの異なる変数であり、ローカル変数だけが初期化されます。

おそらく、この変更によってこの問題を解決します:

... 
label = new JLabel("a"); 
label.setBounds(146, 184, 131, 20); 
... 
関連する問題