我正在使用IntelliJ IDEA。 我有一個「Clicker遊戲」項目,即時通訊工作,因爲我想學習Java和練習一下。我的JavaFX窗口中的標籤需要不斷更新。我想這樣做的方式是通過Timer和TimerTask,但我在某處讀到這不是一個好主意,而且我寧願使用Worker/Task/Service。實現這個(調用我的Update()方法)只工作一次,但會導致運行時錯誤。我不知道我在做什麼錯,任何人都可以幫助我?JavaFX服務/任務/工人和自動化
更新方法:
public void Update(){
dollarlabel.setText(Double.toString(player.getDollars()));
vaselineCost.setText(Double.toString(player.shop.vaseline.cost));
bolCost.setText(Double.toString(player.shop.bol.cost));
appleCost.setText(Double.toString(player.shop.apple.cost));
duikenCost.setText(Double.toString(player.shop.duiken.cost));
}
服務:
public Service service = new Service() {
@Override
protected Task createTask() {
Update();
return null;
}
};
啓動該服務的方法:
public void InitializeService(){
service.start();
}
InitializeService被稱爲上的按鈕的按下。理想情況下,它被稱爲在計劃的開始,但嘿..一次問題的權利?
這裏是錯誤,當我呼籲「InitializeService」:http://pastebin.com/jrsVh23R
爲了澄清,我不知道在哪裏的空指針異常從何而來。我宣佈我的變量,然後才被使用,即:
public Label dollarlabel = new Label();
public Label vaselineCost = new Label();
public Label bolCost = new Label();
public Label duikenCost = new Label();
public Label appleCost = new Label();
任何知道我做錯了什麼的人?提前致謝。
您應該返回NULL以外的東西.. –