2011-11-20 41 views
2

我對Java相對較新,並決定用Swing搞砸了一下。我想構建一個應用程序,可以根據點擊按鈕向上或向下更新計數器。在actionPerformed()方法之外使用變量

一切都很好,直到我不得不將偵聽器添加到其中一個按鈕。我添加了一個按鈕,並修改了一段代碼,我在網上找到:

addHome.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) 
     { 
      //Execute when button is pressed 
      addHomeCount++; 
     } 
    }); 

我想按鈕被點擊時要增加addHomeCount。如果我在該方法中添加

System.out.println(addHomeCount); 

,它將代碼完美地輸出到控制檯窗口。但是,當我在方法之外添加相同的代碼時,它只返回0.

有沒有一種方法可以在actionPerformed方法外部增加addHomeCount整數並將其置於JLabel中?我已經閱讀了關於getActionCommand(),但我不確定這是我在這裏尋找的。

回答

3

打印0的原因是因爲偵聽器外部的代碼立即執行。偵聽器代碼僅在您按下按鈕時纔會執行,因此直到打印語句後纔會發生。

我認爲你所需要做的就是從動作監聽器中設置JLabel文本。

JLabel addHomeLabel = new JLabel(); 
//add label to gui... 
addHome.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent e) 
    { 
     //Execute when button is pressed 
     addHomeCount++; 
     addHomeLabel.setText("Button pressed " + addHomeCount); 

    } 
}); 
+3

*「我不確定你需要以下」*我相信你沒有。 –

+1

@AndrewThompson謝謝 - 我不經常做足夠的記憶,當你需要這樣做,當你不需要時 –

+1

謝謝,它工作得很好! – user1055963

相關問題