Tag: jlayer

在java问题中使用JLayer在线程中只播放一个mp3文件

我正在使用带有GUI的Java编写的音频播放器。 为了播放mp3文件,我从javazoom中选择了JLayer库,因为我看到它非常受欢迎并且使用过。 我制作了GUI,设法播放播放列表中选定的mp3文件。 我的问题是,如果我在播放按钮或播放列表中的文件上多次按下它会开始播放歌曲多次,因为我按它并且我想在同一个线程中播放它; 如果我再次按下播放按钮,我想再次播放,而不是在当前播放时播放同一首歌。 这是播放mp3文件的代码: public class Playing implements Runnable{ private Player mp3Player; private Thread playerThread; public void createPlayer(FileInputStream file) throws JavaLayerException{ mp3Player = new Player(file); playerThread = new Thread(this); playerThread.start(); } @Override public void run(){ try { mp3Player.play(); } catch (JavaLayerException ex) { Logger.getLogger(Playing.class.getName()).log(Level.SEVERE, null, ex); } } 这是我播放按钮的方法: public void createPlayButton(){ play […]

将透明JPanel放在另一个不工作的JPanel之上

我试图将JPanel放在另一个包含JTextArea和按钮的JPanel之上,我希望上层apnel是透明的。 我通过制作上面板的setOpaque(false)来尝试它。 但它不起作用。 任何人都可以帮我解决这个问题吗? 提前致谢! public class JpanelTest extends JPanel { public JpanelTest() { super(); onInit(); } private void onInit() { setLayout(new BorderLayout()); JPanel panel = new JPanel(); panel.setLayout(new BorderLayout()); panel.add(new JTextArea(100,100),BorderLayout.CENTER); panel.add(new JButton(“submit”),BorderLayout.SOUTH); JPanel glass = new JPanel(); glass.setOpaque(false); add(panel,BorderLayout.CENTER); add(glass,BorderLayout.CENTER); setVisible(true); } public static void main(String args[]) { new JpanelTest(); } }

使用JLayer调整音量

我和一个朋友正在编写MP3播放器作为学校项目。 我们差不多完成了,现在我们试图编写一个函数来改变播放器的音量。 我们正在使用: 音频设备 AdvancedPlayer 我知道其他人已经问了同样的问题,但我没有完全得到解决方案,我不想回答这么老的问题,所以我想我会再问一次。 干杯蒂莫西

Java Jlayer Mp3播放器 – 如何重复和停止歌曲

我很抱歉我的英语不好:)我对mp 3播放器有问题。 我正在使用jLayer。 这是我的代码 private void formWindowOpened(java.awt.event.WindowEvent evt) { new Thread (){ public void run(){ try { Player prehravac; FileInputStream buff = new FileInputStream(Okno.filename); prehravac = new Player(buff); prehravac.play(); if (prehravac != null) { prehravac.play(); } } catch(Exception e) { } } }.start(); } 在我的应用程序中,我需要从头到尾播放歌曲。 所以当歌曲结束时我需要再次启动它,当窗口关闭时我想要停止这首歌…… 有人可以帮我吗? :)我试着做了2天……我不知道如何在不同的线程中停止一些东西…谢谢你的帮助:)

使用JLayer时在Java中更改卷

我正在使用JLayer播放来自互联网的mp3数据输入流。 如何更改输出的音量? 我正在使用此代码来播放它: URL u = new URL(s); URLConnection conn = u.openConnection(); conn.setConnectTimeout(Searcher.timeoutms); conn.setReadTimeout(Searcher.timeoutms); bitstream = new Bitstream(conn.getInputStream()/*new FileInputStream(quick_file)*/); System.out.println(bitstream); decoder = new Decoder(); decoder.setEqualizer(equalizer); audio = FactoryRegistry.systemRegistry().createAudioDevice(); audio.open(decoder); for(int i = quick_positions[0]; i > 0; i–){ Header h = bitstream.readFrame(); if (h == null){ return; } bitstream.closeFrame();

FileNotFoundException,该文件存在Java

我有一个非常奇怪的问题,我正在尝试用一些Java代码和JLayer播放一些MP3。 我有一个方法设置来生成文件路径,但它给了我一大堆的悲伤。 这是return语句(以及方法中涉及的所有代码): private static String findSoundFile(String numSeq) { return “file:///Users/user/Desktop/FinishedPhone/” + numSeq + “.mp3” } 我有一组可能约150个mp3文件,全部命名为1.mp3,2.mp3等。它们上升到大约156(中间有一些缺失)。 根据用户输入的3位数代码,它播放其中一个声音。 这段代码可以完美地用于1-99之间的任何事情,当你到达100时停止工作。 当用户打出100或110或者你有什么时,Java会抛出FileNotFoundException。 我向你保证,文件就在那里。 以下是使用findSoundFile返回的文件路径的代码: public static void processNumberSequence(String numSeq) throws IOException { if (numSeq != “”) { String soundLoc = findSoundFile(numSeq); File file = new File(soundLoc); System.out.println(“System can read: ” + file.canRead()); System.out.println(soundLoc); SoundPlayer soundToPlay = new […]

Java Swing循环进度条无法正常工作

我从Oracle站点发现了这个测试项目 ,因为我想在我的项目中添加一个循环进度条。 我正在使用Netbeans开发应用程序,当我启动应用程序时,应该是圆圈的JPanel ….令人失望。 我删除了所有无法解决此问题的代码,我已经得到了这段代码: import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.beans.PropertyChangeEvent; import javax.swing.*; import javax.swing.plaf.LayerUI; public class Loading_Test extends javax.swing.JFrame { static final WaitLayerUI layerUI = new WaitLayerUI(); public Loading_Test() { JPanel panel = new JPanel(); JLayer jlayer = new JLayer(panel, layerUI); add(jlayer); initComponents(); } @SuppressWarnings(“unchecked”) private void initComponents() { setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); javax.swing.GroupLayout layout […]

通过JLayer和LayerUI缩放JLayeredPane

在Stack Overflow问题上已经提出,在Swing应用程序中实现缩放的最佳方法是通过Java 7提供的JLayer装饰器。 我一直在关注Oracle教程并认为最好的方法是创建我自己的ZoomUI来扩展LayerUI 。 到目前为止,我的想法是这个类将有一个zoom成员变量,在绘制实际组件之前应用它。 然后我可以使用这个相同的类来捕获鼠标事件并将它们发送到未缩放的坐标。 我在第一步遇到一些麻烦,无法理解为什么g2.scale(zoom, zoom)调用在我的SSCCE下面没有效果。 import javax.swing.*; import javax.swing.plaf.LayerUI; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; public class Demo { public static void main(String args[]) { EventQueue.invokeLater(new Runnable() { @Override public void run() { JFrame frame = new JFrame(); frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); final JLayeredPane panel = new JLayeredPane(); final ZoomUI layerUI = […]

使用java播放mp3的LineUnavailableException

我的目标是从Java播放mp3文件。 对于我采用的每种方法,它总是因LineUnavailableException失败。 AudioInputStream inputStream = AudioSystem.getAudioInputStream(new URL(“http://localhost:8080/agriserver/facebook/sound/test6.mp3”)); Clip clip = AudioSystem.getClip(info); clip.open(inputStream); clip.start(); 尝试修复它失败: 使用Sun的mp3插件。 使用Jlayer第三方库 使用Tritonus第三方库 使用Sony Sound Forge,Adobe Sound Booth重新编码mp3,一切都没有运气 使用不同的编码率和采样率重新编码mp3 尝试使用JMF 使用来自互联网的随机mp3,在其他应用程序中可以正常播放 阅读具有相同错误的post。 所有post都没有帮助解决问题的答案。 这是例外: 线程“main”中的exceptionjavax.sound.sampled.LineUnavailableException:格式为MPEG1L3 48000.0 Hz的行,每个样本未知位,立体声,未知帧大小,41.666668帧/秒,不支持。 at com.sun.media.sound.DirectAudioDevice $ DirectDL.implOpen(DirectAudioDevice.java:494) at com.sun.media.sound.DirectAudioDevice $ DirectClip.implOpen(DirectAudioDevice.java:1280) 在com.sun.media.sound.AbstractDataLine.open(AbstractDataLine.java:107) 在com.sun.media.sound.DirectAudioDevice $ DirectClip.open(DirectAudioDevice.java:1061) 在com.sun.media.sound.DirectAudioDevice $ DirectClip.open(DirectAudioDevice.java:1151) 在Demo.playMp3(Demo.java:83)

安全桌面模式效果的Java应用程序

现在有没有人如何实现“安全桌面模式”(效果),例如从Windows Vista / 7 UAC同意块获得? 我假设它是一些function,将在这里删除像素(并可能使它们变灰),然后最终将其绘制到屏幕…我想将它应用到我的应用程序,以防止用户做任何事情,直到另一个用户连接到系统(但除此之外) 我真的很感激这个建议。 亲切的问候 一个 编辑:我真的只是在寻找这个 graphicsFX.setColor(new Color(0, 0, 0, 0.8f)); graphicsFX.fillRect(0, 0, 800, 600); 延迟输入我可以做得很好…… 谢谢大家……