這Morning Class應該創建一個new Morning
,並在每個公雞的開始將烏鴉。我的公雞會烏鴉一次,等待五秒鐘,再次烏鴉。然後5秒鐘後,烏鴉烏鴉兩次,然後烏鴉不停。我能做些什麼才能做到這一點?我只是想要它crow every 5 seconds
。如果我將一個timer.restart()
置於ActionPerformed中,它什麼也不做。有人可以指出或給我一個小費,我做錯了什麼?任何幫助將非常感激。我該如何搞定我的Java計時器?
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.Timer;
public class Morning extends JFrame
implements ActionListener
{
private EasySound rooster;
public Timer timer;
public Morning()
{
super("Morning");
EasySound rooster = new EasySound("roost.wav");
rooster.play();
timer = new Timer(5000, this);
timer.start();
Container c = getContentPane();
c.setBackground(Color.WHITE);
//page 35
}
public void actionPerformed(ActionEvent e)
{
Morning morning = new Morning();
}
public static void main(String[] args)
{
Morning morning = new Morning();
morning.setSize(300, 150);
morning.setDefaultCloseOperation(EXIT_ON_CLOSE);
morning.setVisible(true);
}
}
我認爲我應該有一個無限循環,每5秒鐘創建一個新的早晨並且雞叫。我不明白的是爲什麼它會一次,一次,兩次,然後不間斷。如果我把Rooster.play放在Action Performed中,它將會出現一次,然後我在線程「AWT-EventQueue-0」中得到異常java.lang.NullPointerException at Morning.actionPerformed(Morning.java:29) – cutrightjm
首先,如果你做一個無限循環,因爲你顯示你有機會得到一個內存不足的錯誤,因爲你正在創建無限數量的Mornings。在無限循環中播放聲音和創建無限數量的對象之間有所不同。 –
@ekaj:你在遮蔽公雞變量。請參閱編輯我的答案。 –