2014-04-30 47 views
0

在下面的代碼中,setText()函數提供了一個錯誤,不允許文本被更改爲JLabel aJLabel b。什麼是修復?JLabel.setText()不起作用

public void actionPerformed(ActionEvent e) { 
    boolean is1 = true; 
    if (e.getActionCommand().equals("r")) { 
     if (is1 == true) { 
      r1++; 
      a.setText("Dice Rolls: " + r1); 
     } else { 
      r2++; 
      b.setText("Dice Rolls: " + r2); 
     } 
    } 
} 

初始化:

public class Clacker implements ActionListener { 
    JLabel a; 
    JLabel b; 
    int r1 = 0; 
    int r2 = 0; 
    ... 
    public Clacker() { 
     JLabel a=new JLabel("Dice Rolls: " + r1); 
     JLabel b=new JLabel("Dice Rolls: " + r2); 
    } 
} 
+0

什麼是錯誤? – GriffeyDog

+1

注意:您在顯示的代碼片段中有一個額外的'}',導致if語句無用。 –

+0

線程「AWT-EventQueue-0」中的異常java.lang.NullPointerException – user3281695

回答

1
public class Clacker implements ActionListener { 
    JLabel a; 
    JLabel b; 
    int r1=0; 
    int r2=0; 

    public Clacker(){ 
     JLabel a=new JLabel("Dice Rolls: "+r1); 
     JLabel b=new JLabel("Dice Rolls: "+r2); 
    } 

    ... 
} 

在構造函數中,您要創建2個新的標籤變量,要初始化的變量,而不是你的字段變量。

public Clacker(){ 
     a=new JLabel("Dice Rolls: "+r1); 
     b=new JLabel("Dice Rolls: "+r2); 
    } 

這將解決您的問題。刪除構造函數中的聲明,並初始化字段標籤。

+0

我也知道,現在我覺得很蠢 – user3281695