匿名使用者
匿名使用者 發問時間: 電腦與網際網路程式設計 · 8 年前

JAVA Eclipse 如何加入背景音樂

請問我該如何在以下這段程式中加入背景音樂?

package changeColor;

import javax.swing.*;

import java.awt.event.*;

import java.awt.*;

public class ChangeColor extends JPanel implements ActionListener{

/**

*

*/

private static final long serialVersionUID = 1L;

JButton red = new JButton("紅");

JButton orange = new JButton("橙");

JButton yellow = new JButton("黃");

JButton green = new JButton("綠");

JButton blue = new JButton("藍");

public static void main(String[] args){

// 建立 ChangeColor物件 (JPanel 子類別物件)

ChangeColor p =new ChangeColor();

// 將JPanel 物件加入 JFrame

JFrame f = new JFrame("變更背景顏色");

f.getContentPane().add(p);

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

f.setSize(360,80);

f.setVisible(true);

}

public ChangeColor(){

// 將按鈕加入視窗內

add(red);

add(orange);

add(yellow);

add(green);

add(blue);

// 將按鈕觸發事件設在此物件

red.addActionListener(this);

orange.addActionListener(this);

yellow.addActionListener(this);

green.addActionListener(this);

blue.addActionListener(this);

}

// 按鈕所觸發事件

public void actionPerformed(ActionEvent e){

JButton s =(JButton) e.getSource(); //取得產生事件按鈕

// 將視窗對應按鈕所設定顏色

if(s == red) setBackground(Color.red);

else if(s == orange) setBackground(Color.orange);

else if(s == yellow) setBackground(Color.yellow);

else if(s == green) setBackground(Color.green);

else setBackground(Color.blue);

}

}

已更新項目:

我想要的是音樂可以一直重複播放的,然後不會影響到按鈕

就是不論有沒有按切換背景顏色的按鈕,音樂都不會中斷的一直播放下去

1 個解答

評分
  • 8 年前
    最佳解答

    import javax.sound.sampled.AudioInputStream;

    import javax.sound.sampled.AudioSystem;

    import javax.sound.sampled.Clip;

    import javax.sound.sampled.LineUnavailableException;

    import javax.swing.*;

    import java.awt.event.*;

    import java.awt.*;

    import java.net.URL;

    import java.io.IOException;

    public class ChangeColor extends JPanel implements ActionListener{

    /**

    *

    */

    private static final long serialVersionUID = 1L;

    JButton red = new JButton("紅");

    JButton orange = new JButton("橙");

    JButton yellow = new JButton("黃");

    JButton green = new JButton("綠");

    JButton blue = new JButton("藍");

    static Clip clip;

    static AudioInputStream ais;

    public static void main(String[] args) throws Exception{

    // 建立 ChangeColor物件 (JPanel 子類別物件)

    ChangeColor p =new ChangeColor();

    // 將JPanel 物件加入 JFrame

    URL url = new URL(

    "http://pscode.org/media/leftright.wav%22);

    clip = AudioSystem.getClip();

    //getAudioInputStream() also accepts a File or InputStream

    ais = AudioSystem.

    getAudioInputStream(url );

    JFrame f = new JFrame("變更背景顏色");

    f.getContentPane().add(p);

    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    f.setSize(360,80);

    f.setVisible(true);

    }

    public ChangeColor(){

    // 將按鈕加入視窗內

    add(red);

    add(orange);

    add(yellow);

    add(green);

    add(blue);

    // 將按鈕觸發事件設在此物件

    red.addActionListener(this);

    orange.addActionListener(this);

    yellow.addActionListener(this);

    green.addActionListener(this);

    blue.addActionListener(this);

    }

    // 按鈕所觸發事件

    public void actionPerformed(ActionEvent e){

    JButton s =(JButton) e.getSource(); //取得產生事件按鈕

    // 將視窗對應按鈕所設定顏色

    if(s == red) setBackground(Color.red);

    else if(s == orange) setBackground(Color.orange);

    else if(s == yellow) setBackground(Color.yellow);

    else if(s == green) setBackground(Color.green);

    else setBackground(Color.blue);

    if (clip.isRunning())

    clip.close();

    try {

    if (!(clip.isOpen()))

    clip.open(ais);

    } catch (LineUnavailableException e1) {

    // TODO Auto-generated catch block

    e1.printStackTrace();

    } catch (IOException e1) {

    // TODO Auto-generated catch block

    e1.printStackTrace();

    }

    clip.loop(1);

    }

    // clip.close();

    }

還有問題?馬上發問,尋求解答。