【发布时间】:2018-01-02 11:45:51
【问题描述】:
我的主类包含这些代码行。 (还有一个将文件添加到播放列表的JButton)
import java.util.List;
import java.util.ArrayList;
import javafx.embed.swing.JFXPanel;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javax.swing.DefaultListModel;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import static javax.swing.JFrame.EXIT_ON_CLOSE;
public class Main {
public static void main(String[] args){
MusicPlayerGUI m = new MusicPlayerGUI();
m.setSize(100,100);
m.setDefaultCloseOperation(EXIT_ON_CLOSE);
m.setVisible(true);
}
}
class MusicPlayerGUI extends JFrame{
static DefaultListModel<String> model = new DefaultListModel<>();
int currentTrack = 0;
int count=0;
int status = 0;
List<Media> playlist = new ArrayList<>();
JFXPanel jfx = new JFXPanel();
MediaPlayer mp;
javax.swing.JButton btnAdd = new javax.swing.JButton("add");
public MusicPlayerGUI() {
add(btnAdd);
btnAdd.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnAddActionPerformed(evt);
}
});
}
private void btnAddActionPerformed(java.awt.event.ActionEvent evt) {
PlaylistManager pm = new PlaylistManager();
JFileChooser loader = new JFileChooser();
loader.showOpenDialog(this);
pm.addSongToPlaylist(loader.getSelectedFile());
}
}
这是另一个类 PlaylistManager,它管理我的播放列表 - 从播放列表中添加、删除文件等操作在这里发生。
public class PlaylistManager extends MusicPlayerGUI{
public PlaylistManager(){};
public void addSongToPlaylist(File file){
Media songToBeAdded = new Media(file.toURI().toString());
playlist.add(songToBeAdded); //effectively adds a song to the playlist
MusicPlayerGUI.model.addElement(file.getName()); //adds to the visual model of the playlist (as am UI element)
System.out.println("Added song: " + file.getName()+" with duration of " +(int)(songToBeAdded.getDuration()).toSeconds());
count++; //increments count of songs in playlist each time one is added
}
问题是,每次我将歌曲添加到播放列表时,持续时间总是读为 0。 控制台打印:
添加歌曲:name_of_the_song.mp3,持续时间为 0
为什么会这样?它无法正确读取持续时间(javafx.util.duration)的原因是什么?我该如何解决这个问题?
【问题讨论】:
-
什么是媒体类??给我们看代码
-
什么是
currentTrack?它的价值是什么?请创建Minimal, Complete, and Verifiable Example 向我们展示。 -
@Ravi - 媒体类docs.oracle.com/javafx/2/api/javafx/scene/media/Media.html javafx.scene,media
-
它甚至可以编译吗????我在任何地方都没有看到
currentTrack声明 -
@some-programmer-dude 我的错,我忘了添加变量。更新。如果我又忘记了什么,请告诉我
标签: java jframe media jfxpanel