У меня есть код с 2 классами MPlayer и Audio.пауза аудио клип в java
У MPlayer есть графический интерфейс (JButtons, JPanel и JFrame и т. Д.), А у Audio есть код для воспроизведения звука.
Проблема заключается в том, что я вызываю метод паузы в классе MPlayer, это не приостанавливает звук.
Может ли кто-нибудь помочь мне с этим?
MPlayer.java:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class MPlayer extends JFrame implements ActionListener {
ImageIcon icon1, icon2, icon3, icon4;
JPanel pan1;
JFrame frame;
JMenuBar bar;
JMenu menu;
JMenuItem menuItem;
JButton btn1, btn2;
public void initGUI() {
bar = new JMenuBar();
menu = new JMenu("Open");
bar.add(menu);
menuItem = new JMenuItem("Open");
menu.add(menuItem);
BorderLayout bl = new BorderLayout();
FlowLayout fl = new FlowLayout();
pan1 = new JPanel();
frame = new JFrame("Music Player");
frame.setLayout(bl);
pan1.setLayout(fl);
frame.setJMenuBar(bar);
icon1 = new ImageIcon("./play.jpg");
icon2 = new ImageIcon("./pause.png");
icon3 = new ImageIcon("./stop.jpg");
icon4 = new ImageIcon("./wallpaper.jpg");
frame.getContentPane().setBackground(Color.BLACK);
btn1 = new JButton(icon1);
btn1.setVisible(true);
btn2 = new JButton(icon3);
btn2.setVisible(true);
pan1.add(btn1);
pan1.add(btn2);
frame.add(new JLabel(icon4), BorderLayout.CENTER);
frame.add(pan1, BorderLayout.SOUTH);
frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
frame.setSize(500, 500);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
frame.setFocusable(true);
btn1.addActionListener(this);
menuItem.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
Audio aud = new Audio();
if (e.getSource() instanceof JMenuItem) {
if (((JMenuItem) (e.getSource())) == menuItem) {
aud.openFile();
}
}
if (btn1.getIcon() == icon1) {
btn1.setIcon(icon2);
aud.pause();
} else if (btn1.getIcon() == icon2) {
btn1.setIcon(icon1);
}
}
public static void main(String[] args) {
MPlayer gui = new MPlayer();
gui.initGUI();
}
}
Audio.java:
import javax.sound.sampled.*;
import java.io.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Audio {
File file;
AudioInputStream audio;
AudioFormat fmt;
DataLine.Info dli;
Clip c;
JFileChooser jfc;
public void openFile() {
try {
jfc = new JFileChooser();
jfc.showOpenDialog(null);
file = jfc.getSelectedFile();
audio = AudioSystem.getAudioInputStream(file);
fmt = audio.getFormat();
dli = new DataLine.Info(Clip.class, fmt);
c = (Clip) AudioSystem.getLine(dli);
c = AudioSystem.getClip();
c.open(audio);
c.start();
} catch (Exception ex) {
ex.getMessage();
}
}
public void pause() {
if (c.isRunning()) {
c.stop();
}
}
}
на данный момент я просто играю короткие длины .wav-файлы. – Masu
Я голосую, чтобы закрыть этот вопрос не по теме, потому что запросил OP. – zx8754
Я никогда не делал этого, если бы позволил мне правильно его отредактировать. Но, к сожалению, я не могу его отредактировать – Masu