2014-11-07 36 views
0

這與我的最後一個問題一致 - 我得到了公雞的聲音,每五秒鐘重複一次,但現在我不得不添加牛聲和黑色背景。每五秒鐘,公雞的聲音和白色的背景應該與牛的聲音和黑色的背景交替出現。但是,當我的程序正在編譯時,它只是播放公雞聲音,然後是牛聲,而不會改變背景顏色。幫幫我!如何在我的java程序上交替我的聲音?

這裏是我的代碼:

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class Morning extends JFrame 
    implements ActionListener 
{ 
    private EasySound rooster; 
    private EasySound cow; 
    private int time; 

    public Morning() 
    { 
    super("Morning"); 
    rooster = new EasySound("roost.wav"); 
    rooster.play(); 

    cow = new EasySound("cow2.wav"); 
    cow.play(); 

    time = 0; 
    Timer clock = new Timer(5000, this); 
    clock.start(); 

    Container c = getContentPane(); 
    c.setBackground(Color.WHITE); 
    } 

    public static void main(String[] args) 
    { 
    Morning morning = new Morning(); 
    morning.setSize(300, 150); 
    morning.setDefaultCloseOperation(EXIT_ON_CLOSE); 
    morning.setVisible(true); 
    } 
    public void actionPerformed(ActionEvent e) 
    { 
    Container c = getContentPane(); 
    if (time == 5000) 
     { 
     rooster.play(); 
     c.setBackground(Color.BLACK); 
     time = 0; 
     } 
    if (time == 0) 
     { 
     cow.play(); 
     c.setBackground(Color.WHITE); 
     time++; 
     } 
    } 
} 

哪裏是我的錯?

謝謝無論誰幫助! Simone

回答

0

您需要將第二個if更改爲else
由於您還在第二種情況下使用了if,只要將time重置爲0,則背景將再次設置爲白色;給人的印象是沒有改變。

修訂
我想你想將其更改爲黑色的第一,因爲最初的背景是白色的已經。

@Override 
public void actionPerformed(ActionEvent e) { 
    if (time == 0) { 
     rooster.play(); 
     c.setBackground(Color.BLACK); 
     time += 5000; 
    } 
    else /*if (time == 5000)*/ { 
     cow.play(); 
     c.setBackground(Color.WHITE); 
     time = 0; 
    } 
} 
+0

我做了你說的,但程序仍在播放公雞聲音,緊接着是牛聲,背景保持白色。有什麼建議麼? – 2014-11-07 01:44:58

相關問題