请大哥大姐们帮忙看看,我想在一个java游戏中添加背景音乐。用的是sun包中的方法。可是限于能力,一直弄不好,请帮忙看看问题出在哪里。谢谢谢谢谢谢。
代码:import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.LinkedList;
import sun.audio.*;
public class Memory extends JFrame implements ActionListener,Runnable
{
Thread thread;
JMenuBar bar;
JMenu fileMenu1,fileMenu2,fileMenu3;
JMenuItem 初级,中级,高级,初级排行榜,中级排行榜,高级排行榜;
Block block[];
ImageIcon icon[];
MemoryTestPane 记忆测试板=null;
File file初级=new File("初级记忆排行榜.txt"),
file中级=new File("中级记忆排行榜.txt"),
file高级=new File("高级记忆排行榜.txt"); LinkedList 成绩表=null;
ShowRecord 显示成绩表对话框=null;
int m=5,n=6;
int 图标个数=0;
Container con=null;
JTextField 提示条=null;
File gradeFile=null;
Thread thread1;
public Memory()
{
thread=new Thread(this);
block=new Block[m*n];
图标个数=m;
icon=new ImageIcon[图标个数];
for(int i=0;i<icon.length;i++)
{
icon[i]=new ImageIcon("a"+i+".gif");
}
for(int i=0;i<block.length;i++)
{
block[i]=new Block();
block[i].设置关闭时的图标(new ImageIcon("关闭.gif"));
}
bar=new JMenuBar();
fileMenu1=new JMenu("记忆力测试");
fileMenu2=new JMenu("排行榜");
fileMenu3=new JMenu("音乐");
初级=new JMenuItem("初级");
中级=new JMenuItem("中级");
高级=new JMenuItem("高级");
fileMenu1.setMnemonic('G');
初级.setMnemonic('B');
中级.setMnemonic('I');
高级.setMnemonic('E');
高级排行榜=new JMenuItem("高级排行榜");
中级排行榜=new JMenuItem("中级排行榜");
初级排行榜=new JMenuItem("初级排行榜");
初级.setMnemonic('T');
fileMenu1.add(初级);
fileMenu1.add(中级);
fileMenu1.add(高级);
fileMenu2.add(初级排行榜);
fileMenu2.add(中级排行榜);
fileMenu2.add(高级排行榜);
bar.add(fileMenu1);
bar.add(fileMenu2);
setJMenuBar(bar);
初级.addActionListener(this);
中级.addActionListener(this);
高级.addActionListener(this);
初级排行榜.addActionListener(this);
中级排行榜.addActionListener(this);
高级排行榜.addActionListener(this);
成绩表=new LinkedList();
if(!file初级.exists())
{
try{
FileOutputStream out=new FileOutputStream("初级记忆排行榜.txt");
ObjectOutputStream object_out=new ObjectOutputStream(out);
object_out.writeObject(成绩表);
object_out.close();
out.close();
}
catch(IOException e)
{
}
}
if(!file中级.exists())
{
try{
FileOutputStream out=new FileOutputStream("中级记忆排行榜.txt");
ObjectOutputStream object_out=new ObjectOutputStream(out);
object_out.writeObject(成绩表);
object_out.close();
out.close();
}
catch(IOException e)
{
}
}
if(!file高级.exists())
{
try{
FileOutputStream out=new FileOutputStream("高级记忆排行榜.txt");
ObjectOutputStream object_out=new ObjectOutputStream(out);
object_out.writeObject(成绩表);
object_out.close();
out.close();
}
catch(IOException e)
{
}
}
gradeFile=file初级;
setBounds(100,100,700,600);
setVisible(true);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
con=getContentPane();
记忆测试板=new MemoryTestPane(block,icon,m,n,gradeFile);
提示条=new JTextField("初级:您需要连续找出"+6+"个相同图标的方块");
提示条.setEditable(false);
提示条.setForeground(Color.red);
con.add(记忆测试板,BorderLayout.CENTER);
con.add(提示条,BorderLayout.SOUTH);
con.validate();
this.validate();
}
public void 给出级别测试(int 宽,int 高,File f)
{
m=宽;
n=高;
图标个数=m;
gradeFile=f;
block=new Block[m*n];
icon=new ImageIcon[图标个数];
for(int i=0;i<icon.length;i++)
{
icon[i]=new ImageIcon("a"+i+".gif");
}
for(int i=0;i<block.length;i++)
{
block[i]=new Block();
block[i].设置关闭时的图标(new ImageIcon("关闭.gif"));
}
记忆测试板=new MemoryTestPane(block,icon,m,n,gradeFile);
con.removeAll();
con.add(记忆测试板,BorderLayout.CENTER);
con.add(提示条,BorderLayout.SOUTH);
con.validate();
this.validate();
}
public void actionPerformed(ActionEvent event)
{
if(event.getSource()==初级)
{
给出级别测试(5,6,file初级);
setBounds(100,100,700,600);
this.validate();
提示条.setText("初级:您需要连续找出"+6+"个相同图标的方块");
}
if(event.getSource()==中级)
{
给出级别测试(6,7,file中级);
setBounds(100,100,700,600);
this.validate();
提示条.setText("中级:您需要连续找出"+7+"个相同图标的方块");
}
if(event.getSource()==高级)
{
给出级别测试(7,8,file高级);
setBounds(100,100,700,600);
this.validate();
提示条.setText("高级:您需要连续找出"+8+"个相同图标的方块");
}
if(event.getSource()==高级排行榜)
{
显示成绩表对话框=new ShowRecord(this,file高级);
显示成绩表对话框.setVisible(true);
}
if(event.getSource()==中级排行榜)
{
显示成绩表对话框=new ShowRecord(this,file中级);
显示成绩表对话框.setVisible(true);
}
if(event.getSource()==初级排行榜)
{
显示成绩表对话框=new ShowRecord(this,file初级);
显示成绩表对话框.setVisible(true);
}
}
public void run()
{
InputStream in = null;
try {
in = new FileInputStream ("夜太黑.wav");
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
AudioStream as = null;
try {
as = new AudioStream (in);
} catch (IOException e) {
e.printStackTrace();
}
AudioPlayer.player.start (as);
}public static void main(String args[])
{
Memory a=new Memory();
a.thread.start();
}
}
代码:import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.LinkedList;
import sun.audio.*;
public class Memory extends JFrame implements ActionListener,Runnable
{
Thread thread;
JMenuBar bar;
JMenu fileMenu1,fileMenu2,fileMenu3;
JMenuItem 初级,中级,高级,初级排行榜,中级排行榜,高级排行榜;
Block block[];
ImageIcon icon[];
MemoryTestPane 记忆测试板=null;
File file初级=new File("初级记忆排行榜.txt"),
file中级=new File("中级记忆排行榜.txt"),
file高级=new File("高级记忆排行榜.txt"); LinkedList 成绩表=null;
ShowRecord 显示成绩表对话框=null;
int m=5,n=6;
int 图标个数=0;
Container con=null;
JTextField 提示条=null;
File gradeFile=null;
Thread thread1;
public Memory()
{
thread=new Thread(this);
block=new Block[m*n];
图标个数=m;
icon=new ImageIcon[图标个数];
for(int i=0;i<icon.length;i++)
{
icon[i]=new ImageIcon("a"+i+".gif");
}
for(int i=0;i<block.length;i++)
{
block[i]=new Block();
block[i].设置关闭时的图标(new ImageIcon("关闭.gif"));
}
bar=new JMenuBar();
fileMenu1=new JMenu("记忆力测试");
fileMenu2=new JMenu("排行榜");
fileMenu3=new JMenu("音乐");
初级=new JMenuItem("初级");
中级=new JMenuItem("中级");
高级=new JMenuItem("高级");
fileMenu1.setMnemonic('G');
初级.setMnemonic('B');
中级.setMnemonic('I');
高级.setMnemonic('E');
高级排行榜=new JMenuItem("高级排行榜");
中级排行榜=new JMenuItem("中级排行榜");
初级排行榜=new JMenuItem("初级排行榜");
初级.setMnemonic('T');
fileMenu1.add(初级);
fileMenu1.add(中级);
fileMenu1.add(高级);
fileMenu2.add(初级排行榜);
fileMenu2.add(中级排行榜);
fileMenu2.add(高级排行榜);
bar.add(fileMenu1);
bar.add(fileMenu2);
setJMenuBar(bar);
初级.addActionListener(this);
中级.addActionListener(this);
高级.addActionListener(this);
初级排行榜.addActionListener(this);
中级排行榜.addActionListener(this);
高级排行榜.addActionListener(this);
成绩表=new LinkedList();
if(!file初级.exists())
{
try{
FileOutputStream out=new FileOutputStream("初级记忆排行榜.txt");
ObjectOutputStream object_out=new ObjectOutputStream(out);
object_out.writeObject(成绩表);
object_out.close();
out.close();
}
catch(IOException e)
{
}
}
if(!file中级.exists())
{
try{
FileOutputStream out=new FileOutputStream("中级记忆排行榜.txt");
ObjectOutputStream object_out=new ObjectOutputStream(out);
object_out.writeObject(成绩表);
object_out.close();
out.close();
}
catch(IOException e)
{
}
}
if(!file高级.exists())
{
try{
FileOutputStream out=new FileOutputStream("高级记忆排行榜.txt");
ObjectOutputStream object_out=new ObjectOutputStream(out);
object_out.writeObject(成绩表);
object_out.close();
out.close();
}
catch(IOException e)
{
}
}
gradeFile=file初级;
setBounds(100,100,700,600);
setVisible(true);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
con=getContentPane();
记忆测试板=new MemoryTestPane(block,icon,m,n,gradeFile);
提示条=new JTextField("初级:您需要连续找出"+6+"个相同图标的方块");
提示条.setEditable(false);
提示条.setForeground(Color.red);
con.add(记忆测试板,BorderLayout.CENTER);
con.add(提示条,BorderLayout.SOUTH);
con.validate();
this.validate();
}
public void 给出级别测试(int 宽,int 高,File f)
{
m=宽;
n=高;
图标个数=m;
gradeFile=f;
block=new Block[m*n];
icon=new ImageIcon[图标个数];
for(int i=0;i<icon.length;i++)
{
icon[i]=new ImageIcon("a"+i+".gif");
}
for(int i=0;i<block.length;i++)
{
block[i]=new Block();
block[i].设置关闭时的图标(new ImageIcon("关闭.gif"));
}
记忆测试板=new MemoryTestPane(block,icon,m,n,gradeFile);
con.removeAll();
con.add(记忆测试板,BorderLayout.CENTER);
con.add(提示条,BorderLayout.SOUTH);
con.validate();
this.validate();
}
public void actionPerformed(ActionEvent event)
{
if(event.getSource()==初级)
{
给出级别测试(5,6,file初级);
setBounds(100,100,700,600);
this.validate();
提示条.setText("初级:您需要连续找出"+6+"个相同图标的方块");
}
if(event.getSource()==中级)
{
给出级别测试(6,7,file中级);
setBounds(100,100,700,600);
this.validate();
提示条.setText("中级:您需要连续找出"+7+"个相同图标的方块");
}
if(event.getSource()==高级)
{
给出级别测试(7,8,file高级);
setBounds(100,100,700,600);
this.validate();
提示条.setText("高级:您需要连续找出"+8+"个相同图标的方块");
}
if(event.getSource()==高级排行榜)
{
显示成绩表对话框=new ShowRecord(this,file高级);
显示成绩表对话框.setVisible(true);
}
if(event.getSource()==中级排行榜)
{
显示成绩表对话框=new ShowRecord(this,file中级);
显示成绩表对话框.setVisible(true);
}
if(event.getSource()==初级排行榜)
{
显示成绩表对话框=new ShowRecord(this,file初级);
显示成绩表对话框.setVisible(true);
}
}
public void run()
{
InputStream in = null;
try {
in = new FileInputStream ("夜太黑.wav");
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
AudioStream as = null;
try {
as = new AudioStream (in);
} catch (IOException e) {
e.printStackTrace();
}
AudioPlayer.player.start (as);
}public static void main(String args[])
{
Memory a=new Memory();
a.thread.start();
}
}
多谢楼上的,能告诉我放在哪里好吗?