我正在编写一个小闹钟程序,当闹钟时间到了时,它会播放一个音频文件几次。
程序的报警部分已经完成。现在我开始播放文件。我使用jFileChooser来选择文件。javax . sound . sampled . audio inputstream、javax . sound . sampled . audio system和javax.sound.sampled.Clip来播放我的wav文件。也在工作。
但是我真的只想播放一个wav文件,我也希望能够在多个系统上移动这个闹钟,所以我想避免使用jFileChooser来选择我的闹钟音。我不想每次运行程序时都要浏览和选择文件。
给文件指定一个相对路径(例如,在与jar相同的文件夹中),然后修复路径字符串会更容易吗?或者,以某种方式使wav成为jar文件的一部分会更容易吗(这是我更喜欢的,因为这样我就不必担心wav文件了。它只是一个jar文件,可以独立用作闹钟。也许是一个字节数组?)
提前感谢!抱歉,如果这太蠢了。我是新手!
这是我的AudioInputStream代码。
public void getaudPath() {
try {
JFileChooser chooser;
String choosertitle=null;
chooser = new JFileChooser();
FileNameExtensionFilter filter = new FileNameExtensionFilter(
"WAV only", "wav");
chooser.setFileFilter(filter);
chooser.setCurrentDirectory(new java.io.File("."));
chooser.setDialogTitle(choosertitle);
chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
if (chooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
apath = (chooser.getSelectedFile()).toString();
File soundFile = new File(apath);
AudioInputStream audioIn = AudioSystem.getAudioInputStream(soundFile);
URL url = this.getClass().getClassLoader().getResource(apath);
clip = AudioSystem.getClip();
clip.open(audioIn);
JOptionPane.showMessageDialog(this,"Got file, A-okay!");
} else {
apath = null;
}} catch (Exception e) {JOptionPane.showMessageDialog(this,"Error in getting sound file:=> "+e); }
}
Class.getResource(“/path/to/the.wav)
获取剪辑的URL。AudioInputStream需要文件对象。
不,他们不是!这是我在Java Sound信息中提到的源代码的副本/粘贴。页
import java.net.URL;
import javax.swing.*;
import javax.sound.sampled.*;
public class LoopSound {
public static void main(String[] args) throws Exception {
URL url = new URL(
"http://pscode.org/media/leftright.wav");
Clip clip = AudioSystem.getClip();
// getAudioInputStream() also accepts a File or InputStream
AudioInputStream ais = AudioSystem.
getAudioInputStream( url );
clip.open(ais);
clip.loop(Clip.LOOP_CONTINUOUSLY);
SwingUtilities.invokeLater(new Runnable() {
public void run() {
// A GUI element to prevent the Clip's daemon Thread
// from terminating at the end of the main()
JOptionPane.showMessageDialog(null, "Close to exit!");
}
});
}
}
它使用URL来获取AudioInputStream
,而不是File
。
对< code > audio system . getaudioinputstream 的调用被重载以接受5种不同的参数类型。最重要/最普通的3个是。
文件
输入流
问题内容: 我有一个自定义字体,我想在Java程序中炫耀它,用户无需安装就可以查看它。有谁知道这是怎么做到的吗? 工作解决方案 我已经实现了以下内容: 问题答案: 我从未做过,但似乎您想要的方法是 导入字体 或者 该参数是或,而或参数包含字体的二进制数据。 导入后使用字体: 要使Font对Font构造函数可用,必须通过调用在中注册返回的Font 。
问题内容: 我有一个使用Apache FOP生成PDF文件的应用程序。一切正常,除了生成的PDF中的西里尔字母。据我了解,我应该将包含西里尔字母的字体与应用程序捆绑在一起。 因此,我将应用程序设置如下:我在../src/main/resources/conf/fop.xml(PDF渲染器的默认默认设置)中有一个配置文件,并像这样初始化FOP: fileLoader是我自己的用于读取文件的实用程序,
我有一个使用Apache FOP生成PDF文件的应用程序。一切都很好,除了生成的PDF中的西里尔字母。据我所知,我应该捆绑应用程序的西里尔字母的字体。 因此,我将应用程序设置如下:我在../src/main/resources/conf/fop . XML(PDF渲染器的默认设置)并像这样初始化FOP: fileLoader是我自己的读取文件的实用程序,XSLT由它加载,一切都很好。我尝试了另一种
在输出中它只给了令牌,空间令牌有人能帮我解决问题吗?
除了通过JSP表达式在JSP页面中嵌入Java代码外,还可以通过<% ... %>在JSP页面中直接嵌入Java代码。所有写在<% ... %>之间的内容JSP编译器都会将其认为是Java代码,并直接将其插入由JSP页面生成的Servlet类的_jspService方法中,如下面的JSP代码: <% int n = (3 + 4) * 5; %> 上面的代码在JSP页面中嵌入了一行非常简单
做这件事最轻的方法是什么。使用像反应艺术这样的东西对我试图做的事情来说是过度的。