2016-06-13 116 views
0

我想寫一個簡單的計算器程序,只是增加兩個數字,並在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

,你知道是一直以:

你可能會受到此更改解決這個問題?你爲什麼還要問這個問題?剛纔閱讀以前的答案 – 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,其名稱與您的成員label相同。但是這些是兩個不同的變量,只有本地的變量被初始化。如果你承認,是有人問過

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