首页 > 后端开发 > 正文

如何在Java小程序中添加音乐

2024-04-10 05:59:42 | 我爱编程网

最近经常有小伙伴私信询问如何在Java小程序中添加音乐相关的问题,今天,我爱编程网小编整理了以下内容,希望可以对大家有所帮助。

本文目录一览:

如何在Java小程序中添加音乐

JAVA 实现音频播放

这个程序只要写对了音乐文件的URL地址,例如:new URL("file:/C:/tmp/1/Windows Ding.wav");

就可以播放音乐,除了可以播放.wav格式的音乐,还可以播放.au格式的音乐。

另外,如果你不希望音乐循环播放,你可以去掉audio1.loop();这一语句。

import java.applet.AudioClip;

import java.net.MalformedURLException;

import java.net.URL;

import javax.swing.JFrame;

public class D extends JFrame{

D(){

setSize(200,200);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setVisible(true);

URL codebase=null;

try {

codebase = new URL("file:/C:/tmp/1/Windows Ding.wav");

} catch (MalformedURLException e) {

e.printStackTrace();

}

AudioClip audio1=Applet.newAudioClip(codebase);

audio1.loop();

}

public static void main(String[] args) {

new D();

}

}

如何在Java小程序中添加音乐

如何在Java小程序中添加音乐

AudioClip audio1=getAudioClip(codebase,"danny.au");可以写在paint函数中,也可以写在别的函数中。Java applet除了可以播放.au的音乐文件还可以播放.wav的音乐文件,要播放mp3文件需要有JMF插件。

import java.applet.Applet;

import java.applet.AudioClip;

import java.awt.Graphics;

import java.net.URL;

public class PlaySound extends Applet

{

public void paint(Graphics g)

{

URL codebase=getCodeBase();

System.out.println(codebase);

AudioClip audio1=getAudioClip(codebase,"danny.au");

g.drawString("Play music",30,30);

audio1.loop();

}

}

如何在Java小程序中添加音乐

java 怎样播放音乐

你下去下载一个Media包

import java.awt.BorderLayout;

import java.awt.CheckboxMenuItem;

import java.awt.Color;

import java.awt.Component;

import java.awt.Container;

import java.awt.FileDialog;

import java.awt.Font;

import java.awt.FontMetrics;

import java.awt.Graphics;

import java.awt.Menu;

import java.awt.MenuBar;

import java.awt.MenuItem;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.ItemEvent;

import java.awt.event.ItemListener;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

import javax.media.ControllerClosedEvent;

import javax.media.ControllerEvent;

import javax.media.ControllerListener;

import javax.media.EndOfMediaEvent;

import javax.media.GainControl;

import javax.media.Manager;

import javax.media.MediaLocator;

import javax.media.NoPlayerException;

import javax.media.Player;

import javax.media.PrefetchCompleteEvent;

import javax.media.RealizeCompleteEvent;

import javax.media.Time;

import javax.swing.JFrame;

class MediaPlayer extends JFrame implements ActionListener, ControllerListener, ItemListener

{

//MediaPlayer类的变量成员的声明;

//JMF提供的播放器对象;

static Player player;

Component vc, cc, gcc;

GainControl gc;

//first值用来控制在刚开始程序时显示一幅欢迎界面;loop用以标记是否循环播放;

boolean first = true, loop = false;

//设立一个字符串记录当前打开文件的路径

String currentDirectory;

MediaPlayer(String title)

{

super(title);

// 利用一个adapter实现对用户点击窗口系统菜单的关闭按钮

// 时的响应;

addWindowListener(new WindowAdapter()

{

public void windowClosing(WindowEvent e)

{

//调用dispose以执行windowClosed

//setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

dispose();

}

public void windowClosed(WindowEvent e)

{

if (player != null)

player.close();

System.exit(0);

}

});

//调用设置程序菜单栏的方法成员完成菜单的布置

setupMenu();

setSize(350, 300);

setVisible(true);

}

//本方法用以设置程序菜单栏

public void setupMenu()

{

//设置一个菜单

Menu f = new Menu("文件");

//往设置的菜单种添加菜单项

MenuItem mi = new MenuItem("打开");

mi.addActionListener(this);

f.add(mi);

f.addSeparator();

CheckboxMenuItem cbmi = new CheckboxMenuItem("循环", false);

cbmi.addItemListener(this);

f.add(cbmi);

f.addSeparator();

mi = new MenuItem("退出");

mi.addActionListener(this);

f.add(mi);

Menu l = new Menu("播放列表");

Menu c = new Menu("播放控制");

MenuItem move = new MenuItem("播放");

move.addActionListener(this);

c.add(move);

c.addSeparator();

MenuItem pause = new MenuItem("暂停");

pause.addActionListener(this);

c.add(pause);

c.addSeparator();

MenuItem stop = new MenuItem("停止");

stop.addActionListener(this);

c.add(stop);

c.addSeparator();我爱编程网

Menu a = new Menu("关于作者");

MenuItem about = new MenuItem("该死的温柔");

about.addActionListener(this);

a.add(about);

//设置一个菜单栏

MenuBar mb = new MenuBar();

//将设置的菜单依次加入程序的菜单栏中去

mb.add(f);

mb.add(c);

mb.add(l);

mb.add(a);

//将构造完成的菜单栏交给当前程序的窗口;

setMenuBar(mb);

}

//事件响应成员;捕捉发送到本对象的各种事件;

public void actionPerformed(ActionEvent e)

{

//设一个字符串用于暂存打开的媒体文件的路径;

String cufile , selcectfile;

if (e.getActionCommand().equals("退出"))

{

// 调用dispose以便执行windowClosed

//dispose();

this.setVisible(false);

return;

}

//次事件表明用户选择了"播放"菜单命令;

//如果当前有一个文件可以播放则执行播放命令;

if (e.getActionCommand().equals("播放"))

{

if (player != null)

{

player.start();

}

return;

}

//如果当前正在播放某一文件,则执行暂停;

if (e.getActionCommand().equals("暂停"))

{

if (player != null)

{

player.stop();

}

return;

}

if (e.getActionCommand().equals("关于作者"))

{

// 调用dispose以便执行windowClosed

//System.out.println("该死的温柔");

return;

}

//次事件表明用户选择了"播放"菜单命令;

//如果当前有一个文件可以播放则执行播放命令;

if (e.getActionCommand().equals("停止"))

{

if (player != null)

{

player.stop();

player.setMediaTime(new Time(0));

}

return;

}

//用户选择要播放的媒体文件

if (e.getActionCommand().equals("打开"))

{

FileDialog fd = new FileDialog(this, "打开媒体文件", FileDialog.LOAD);

fd.setDirectory(currentDirectory);

fd.show();

// 如果用户放弃选择文件,则返回

if (fd.getFile() == null)

return;

//保存了所选文件的名称及其全路径名称已被稍后使用

//同时设置当前文件夹路径

selcectfile = fd.getFile();

currentDirectory = fd.getDirectory();

cufile = currentDirectory + selcectfile;

//将用户选择的文件作为一个菜单项加入播放列表该菜单项"名为"该文件名;

//被点击后给出的命令串是该文件的全路径名

MenuItem mi = new MenuItem(selcectfile);

mi.setActionCommand(cufile);

MenuBar mb = getMenuBar();

Menu m = mb.getMenu(2);

mi.addActionListener(this);

m.add(mi);

}

else

{

//程序逻辑运行到此表示用户选择了一个"播放列表"中的媒体文件

//此时可以通过如下动作获得该文件的全路径名;

cufile = e.getActionCommand();

selcectfile = cufile;

}

//如果已存在一个播放器,则先将其关闭,稍后重新创建

//创建播放器时需要捕捉一些异常;

if (player != null)

player.close();

try

{

player = Manager.createPlayer(new MediaLocator("file:" + cufile));

}

catch (java.io.IOException e2)

{

System.out.println(e2);

return;

}

catch (NoPlayerException e2)

{

System.out.println("不能找到播放器.");

return;

}

if (player == null)

{

System.out.println("无法创建播放器.");

return;

}

first = false;

setTitle(selcectfile);

//设置处理播放控制器实际的对象;

player.addControllerListener(this);

player.prefetch();

}

//因为实现了"ControllerListener"接口,本方法用于处理媒体播放器传来的事件;

public void controllerUpdate(ControllerEvent e)

{

Container tainer = getContentPane();

// 调用player.close()时ControllerClosedEvent事件出现。

// 如果存在视觉部件,则该部件应该拆除(为一致起见,

// 我们对控制面板部件也执行同样的操作下一次需要时再构造)

if (e instanceof ControllerClosedEvent)

{

if (vc != null)

{

remove(vc);

vc = null;

}

if (cc != null)

{

remove(cc);

cc = null;

}

return;

}

//在播放结束时,将播放指针置为文件之首,如果设定了循环播放,则再次启动播放器;

if (e instanceof EndOfMediaEvent)

{

player.setMediaTime(new Time(0));

if (loop)

{

player.start();

}

return;

}

//PrefetchCompleteEvent事件发生后调用start,正式启动播放

if (e instanceof PrefetchCompleteEvent)

{

player.start();

return;

}

//本事件表示由于用于播放的资源已经确定;此时要将媒体的图形conmopnent

//(如果有)显示出来,同时将播放器player的控制器显示到窗口里;

if (e instanceof RealizeCompleteEvent)

{

//如果媒体中有图像,将对应图像component载入窗体;

vc = player.getVisualComponent();

if (vc != null)

tainer.add(vc, BorderLayout.CENTER);

//将对应控制器component载入窗体;

cc = player.getControlPanelComponent();

cc.setBackground(Color.BLUE);

if (cc != null)

tainer.add(cc, BorderLayout.SOUTH);

//有一些特殊媒体在播放时提供另外的控制手段,将该控制器一并加入窗口;

gc = player.getGainControl();

gcc = gc.getControlComponent();

if (gcc != null)

tainer.add(gcc, BorderLayout.NORTH);

//根据媒体文件中是否有图像,设定相应的窗口大小

if (vc != null)

{

pack();

return;

}

else

{

setSize(300, 75);

setVisible(true);

return;

}

}

}

//菜单状态改变事件的响应函数;

public void itemStateChanged(ItemEvent e)

{

loop = !loop;

}

//不执行背景清除操作,以免控制面板部件闪烁

//同时使得本程序在用鼠标拖动窗口时存在一些没有及时重绘的情况,有待改进

public void update(Graphics g)

{

paint(g);

}

/*

* 如果只是要退出程序或者关闭窗口的话,JFrame 有一个更方便的方法:

* JFrame.setDefaultCloseOperation(int operation),参数的值可能是:

* DO_NOTHING_ON_CLOSE

* HIDE_ON_CLOSE

* DISPOSE_ON_CLOSE

* EXIT_ON_CLOSE

*

* 这里可以这样改:

* this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

*/

//本类的main函数,其中构造了本类的一个实例;

public static void main(String[] args)

{

MediaPlayer mediaPlayer = new MediaPlayer("简单媒体播放器");

//mediaPlayer.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);

if (player != null)

{

System.out.println("已经有一个相同的程序在运行");

return;

}

}

public void paint(Graphics g)

{

// 调用超类Frame的paint()方法,该paint()方法将调用Frame包含的各个容器

// 和部件(包括控制面板部件)的paint()方法。

super.paint(g);

//以下代码实现了在开启程序之初显示欢迎界面

if (first)

{

int w = getSize().width;

int h = getSize().height;

g.setColor(Color.green);

g.fillRect(0, 0, w, h);

Font f = new Font("DialogInput", Font.CENTER_BASELINE, 20);

g.setFont(f);

FontMetrics fm = g.getFontMetrics();

int swidth = fm.stringWidth("欢迎使用播放器");

g.setColor(Color.black);

g.drawString(" 欢迎您简单媒体播放器 ",(w - swidth) / 3,(h + getInsets().top) / 2);

}

}

}

以上就是我爱编程网小编整理的内容,想要了解更多相关资讯内容敬请关注我爱编程网。
与“如何在Java小程序中添加音乐”相关推荐
Python中如何添加注释
Python中如何添加注释

Python中如何添加注释任何语言都有注释一说,Python也有注释,如何添加呢?Python添加注释很简单,在文件开头加入一个#即可。如下图所示,因为前面有个#,代码并没有被执行再入下图所示,第二行代码加入了#,所以第一行代码被执行,第三行被执行,第二行没有被执行那么,我们为什么要在代码中添加注释呢?代码中的注释又没有被运行,看起来没有任何意义啊?首先,作为使用者,是

2023-12-14 01:49:51
Python中如何添加注释?
Python中如何添加注释?

Python中如何添加注释?python单行注释符号(#):井号(#)常被用作单行注释符号,在代码中使用#时,它右边的任何数据都会被忽略,当做是注释。print1#输出1,#号右边的内容在执行的时候是不会被输出的。Python注释分为单行注释和多行注释。单行注释以符号“#”开始,当前行中符号“#”及其后的内容为注释语句。单行注释可以独占一行,也可放在语句末尾。说明:在Pycharm中

2023-12-18 02:50:56
如何在MyEclipse中编译java程序?如何运行java程序?
如何在MyEclipse中编译java程序?如何运行java程序?

怎样打开java?1、首先我们打开myeclipse,点击左上角的File。2、接着选择New,选择JavaProject。3、在创建java项目的页面,首先给项目命名,点击next。4、一般在这里没有什么要设置的,点击下面的Finish。5、项目创建完毕之后,我们需要创建类文件,也就是Class文件,在源文件夹src上右击,选择New,选择Class。6、

2024-03-25 16:11:08
Python,turtle海龟作图,如何添加背景图片?
Python,turtle海龟作图,如何添加背景图片?

求教python中的turtle海龟库(turtle)海龟库(turtle)是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形。海龟库积木盒有点类似Kitten创作工具的画笔和动作积木盒的结合体,可以绘制、控制画笔移动

2024-01-23 21:03:19
如何运行java applat小程序
如何运行java applat小程序

如何运行javaapplat小程序如果你是想学习java的话,建议下载一个eclipse,java程序和applet直接能在上面运行,上面也有很多java类使用的提示。。。。如果只是想运行一下的话,步骤就比较多了,你先对环境变量进行配置这个百度上有,根据电脑系统的不同,配置方法也不一样;配好之后要进行测试,在cmd命令符输入javac回车出现帮助提示就表

2024-03-15 07:28:39
如何在UltraEdit中编译和运行Java程序
如何在UltraEdit中编译和运行Java程序

如何在UltraEdit中编译和运行Java程序工具原料:UE编辑器1点击“高级”,再点击“工具配置”。2点击“插入”,在“菜单项”名称上输入“编译java程序”,在“命令行”里输入“javac%n%e”,在工作目录上填“%p”。3切换到“输出”项,选择“输出到列表框”和“捕获输出”,点击“应用”。4同样,也可以定义运行java程序的工具,点击“插入”,在“菜

2024-03-17 15:40:42
如何在JAVA中每隔一段时间执行一段程序
如何在JAVA中每隔一段时间执行一段程序

简述Java程序从编写到运行的基本步骤,并说明Java的基本工作原理Java编译原理:Java虚拟机(JVM)是可运行Java代码的假想计算机。只要根据JVM规格描述将解释器移植到特定的计算机上,就能保证经过编译的任何Java代码能够在该系统上运行。一.Java源文件的编译、下载、解释和执行Java应用程序的开发周期包括编译、下载、解释和执行几个部分。Java编译

2024-03-24 16:51:53
java程序如何在电脑上运行
java程序如何在电脑上运行

java程序如何在电脑上运行有两个方法:1。打开DOS。如果你的java文件已经是编译为class文件了,那就在命令行输入:2。如果你的文件是jar类型的。如下办法:在命令行输入:java   -d  jar文件名.jar3。如果是java源文件。在命令行输入:javac    java文件名.javajava    java文件名java怎么运行代码j

2024-04-01 18:22:22