「Java/swing/サンプル/MP3プレイヤーサンプル(JLayer,BasicPlayer)」の編集履歴(バックアップ)一覧はこちら

Java/swing/サンプル/MP3プレイヤーサンプル(JLayer,BasicPlayer)」(2012/12/16 (日) 00:38:17) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

&ref(BasicPlayerでMP3再生.png) * サンプルダウンロード ソース:&ref(BasicPlayerSample.java) 実行可能形式:&ref(BasicPlayerSample.zip) * サンプルソース BasicPlayerSample.java #highlight(java){{ import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.datatransfer.DataFlavor; import java.awt.dnd.DnDConstants; import java.awt.dnd.DropTarget; import java.awt.dnd.DropTargetAdapter; import java.awt.dnd.DropTargetDropEvent; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ComponentAdapter; import java.awt.event.ComponentEvent; import java.io.File; import java.util.List; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JSeparator; import javazoom.jlgui.basicplayer.BasicController; import javazoom.jlgui.basicplayer.BasicPlayer; import javazoom.jlgui.basicplayer.BasicPlayerException; // JMF MP3 Plugin // http://www.oracle.com/technetwork/java/javase/download-137625.html public class BasicPlayerSample extends JFrame { // ベーシックプレイヤー BasicPlayer player; // Swing用変数、定数 // ボタン用テキスト 停止 final static String STOP = "Stop"; // ボタン用テキスト 再生 final static String PLAY = "Play"; // ボタン用テキスト 一時停止 final static String PAUSE = "Pause"; // タイトル final static String TITLE = "BasicPlayerでmp3再生"; final static String FILE_NAME = "ファイル名:"; // 再生ボタン JButton bPlay; // 曲名ラベル JLabel label; public static void main(String[] args) { new BasicPlayerSample(); } // コンストラクタ public BasicPlayerSample() { setTitle(TITLE); setDefaultCloseOperation(EXIT_ON_CLOSE); setBounds(200, 100, 300, 100); setLayout(new FlowLayout()); // ドロップターゲット設定 new DropTarget(this, DnDConstants.ACTION_COPY, new MyDropTargetListener()); // ラベル設置 label = new JLabel(" mp3ファイルをドロップしてください。"); label.setPreferredSize(new Dimension(getWidth() - 10, 20)); add(label); add(getHr(2000, 0)); // 再生、停止ボタン設置 bPlay = new JButton(PLAY); bPlay.addActionListener(new bPlayAction()); JButton bStop = new JButton(STOP); bStop.addActionListener(new bStopAction()); add(bPlay); add(bStop); // BasicPlayerのインスタンス作成 player = new BasicPlayer(); setVisible(true); addComponentListener(new ComponentAdapter() { // ウィンドウサイズが変化したらラベルのサイズ変更 @Override public void componentResized(ComponentEvent e) { label.setPreferredSize(new Dimension(getWidth() - 10, 20)); } }); } // 水平線 public JSeparator getHr(int width, int hight) { JSeparator sp = new JSeparator(JSeparator.HORIZONTAL); sp.setPreferredSize(new Dimension(width, hight)); return sp; } // 再生ボタンのアクションクラス class bPlayAction implements ActionListener { @Override public void actionPerformed(ActionEvent e) { try { int status = player.getStatus(); if (status == BasicPlayer.PAUSED) { // 一時停止の場合、一時停止を解除します resume(); } else if (status == BasicPlayer.STOPPED) { // 停止中の場合、再生開始します play(); } else if (status == BasicPlayer.PLAYING) { // 再生中の場合、一時停止します pause(); } } catch (Exception ex) { // 握りつぶす } } } // 停止ボタンのアクションクラス class bStopAction implements ActionListener { @Override public void actionPerformed(ActionEvent e) { try { stop(); } catch (Exception ex) { // 握りつぶす } } } // 一時停止 private void pause() throws BasicPlayerException { // playMode = PLAY_MODE_PAUSE; player.pause(); bPlay.setText(PLAY); } // 一時停止解除 private void resume() throws BasicPlayerException { player.resume(); bPlay.setText(PLAY); } // 再生 private void play() throws BasicPlayerException { player.play(); bPlay.setText(PAUSE); } // 停止 private void stop() throws BasicPlayerException { player.stop(); bPlay.setText(PLAY); } // 開く private void open(File file) throws BasicPlayerException { // ラベル設定 label.setText(FILE_NAME + file.getName()); // 取得したファイルを開く player.open(file); play(); // 再生 } // ドロップターゲットリスナー // ドロップされたファイルを受け取り、最初のファイルだけを再生します class MyDropTargetListener extends DropTargetAdapter { @Override public void drop(DropTargetDropEvent dtde) { dtde.acceptDrop(DnDConstants.ACTION_COPY); boolean b = false; try { if (dtde.getTransferable().isDataFlavorSupported( DataFlavor.javaFileListFlavor)) { b = true; List<File> list = (List<File>) dtde.getTransferable() .getTransferData(DataFlavor.javaFileListFlavor); // 最初のファイルだけ取得 File file = list.get(0); open(file); } } catch (Exception e) { e.printStackTrace(); } finally { dtde.dropComplete(b); } } } } }} * 解説 特に難しい事もなく、ダウンロードしたBasicPlayerのzipに入っていた「BasicPlayerSample」を真似してちょいちょいと書いたら簡単にできてしまいました。 自力でマルチスレッドする必要もなく、BasicPlayerのインスタンスを作成して、mp3ファイルオープンして、playメソッドを呼ぶだけ。 stop()で停止、pause()で一時停止、resume()で再開、簡単にmp3が再生できます。
&ref(BasicPlayerでMP3再生.png) * サンプルダウンロード ソース:&ref(BasicPlayerSample.java) 実行可能形式:&ref(BasicPlayerSample.zip) * サンプルソース BasicPlayerSample.java #highlight(java){{ import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.datatransfer.DataFlavor; import java.awt.dnd.DnDConstants; import java.awt.dnd.DropTarget; import java.awt.dnd.DropTargetAdapter; import java.awt.dnd.DropTargetDropEvent; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ComponentAdapter; import java.awt.event.ComponentEvent; import java.io.File; import java.util.List; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JSeparator; import javazoom.jlgui.basicplayer.BasicController; import javazoom.jlgui.basicplayer.BasicPlayer; import javazoom.jlgui.basicplayer.BasicPlayerException; // JMF MP3 Plugin // http://www.oracle.com/technetwork/java/javase/download-137625.html public class BasicPlayerSample extends JFrame { // ベーシックプレイヤー BasicPlayer player; // Swing用変数、定数 // ボタン用テキスト 停止 final static String STOP = "Stop"; // ボタン用テキスト 再生 final static String PLAY = "Play"; // ボタン用テキスト 一時停止 final static String PAUSE = "Pause"; // タイトル final static String TITLE = "BasicPlayerでmp3再生"; final static String FILE_NAME = "ファイル名:"; // 再生ボタン JButton bPlay; // 曲名ラベル JLabel label; public static void main(String[] args) { new BasicPlayerSample(); } // コンストラクタ public BasicPlayerSample() { setTitle(TITLE); setDefaultCloseOperation(EXIT_ON_CLOSE); setBounds(200, 100, 300, 100); setLayout(new FlowLayout()); // ドロップターゲット設定 new DropTarget(this, DnDConstants.ACTION_COPY, new MyDropTargetListener()); // ラベル設置 label = new JLabel(" mp3ファイルをドロップしてください。"); label.setPreferredSize(new Dimension(getWidth() - 10, 20)); add(label); add(getHr(2000, 0)); // 再生、停止ボタン設置 bPlay = new JButton(PLAY); bPlay.addActionListener(new bPlayAction()); JButton bStop = new JButton(STOP); bStop.addActionListener(new bStopAction()); add(bPlay); add(bStop); // BasicPlayerのインスタンス作成 player = new BasicPlayer(); setVisible(true); addComponentListener(new ComponentAdapter() { // ウィンドウサイズが変化したらラベルのサイズ変更 @Override public void componentResized(ComponentEvent e) { label.setPreferredSize(new Dimension(getWidth() - 10, 20)); } }); } // 水平線 public JSeparator getHr(int width, int hight) { JSeparator sp = new JSeparator(JSeparator.HORIZONTAL); sp.setPreferredSize(new Dimension(width, hight)); return sp; } // 再生ボタンのアクションクラス class bPlayAction implements ActionListener { @Override public void actionPerformed(ActionEvent e) { try { int status = player.getStatus(); if (status == BasicPlayer.PAUSED) { // 一時停止の場合、一時停止を解除します resume(); } else if (status == BasicPlayer.STOPPED) { // 停止中の場合、再生開始します play(); } else if (status == BasicPlayer.PLAYING) { // 再生中の場合、一時停止します pause(); } } catch (Exception ex) { // 握りつぶす } } } // 停止ボタンのアクションクラス class bStopAction implements ActionListener { @Override public void actionPerformed(ActionEvent e) { try { stop(); } catch (Exception ex) { // 握りつぶす } } } // 一時停止 private void pause() throws BasicPlayerException { // playMode = PLAY_MODE_PAUSE; player.pause(); bPlay.setText(PLAY); } // 一時停止解除 private void resume() throws BasicPlayerException { player.resume(); bPlay.setText(PLAY); } // 再生 private void play() throws BasicPlayerException { player.play(); bPlay.setText(PAUSE); } // 停止 private void stop() throws BasicPlayerException { player.stop(); bPlay.setText(PLAY); } // 開く private void open(File file) throws BasicPlayerException { // ラベル設定 label.setText(FILE_NAME + file.getName()); // 取得したファイルを開く player.open(file); play(); // 再生 } // ドロップターゲットリスナー // ドロップされたファイルを受け取り、最初のファイルだけを再生します class MyDropTargetListener extends DropTargetAdapter { @Override public void drop(DropTargetDropEvent dtde) { dtde.acceptDrop(DnDConstants.ACTION_COPY); boolean b = false; try { if (dtde.getTransferable().isDataFlavorSupported( DataFlavor.javaFileListFlavor)) { b = true; List<File> list = (List<File>) dtde.getTransferable() .getTransferData(DataFlavor.javaFileListFlavor); // 最初のファイルだけ取得 File file = list.get(0); open(file); } } catch (Exception e) { e.printStackTrace(); } finally { dtde.dropComplete(b); } } } } }} * 解説 特に難しい事もなく、ダウンロードしたBasicPlayerのzipに入っていた「BasicPlayerSample」を真似してちょいちょいと書いたら簡単にできてしまいました。 自力でマルチスレッドする必要もなく、BasicPlayerのインスタンスを作成して、mp3ファイルオープンして、playメソッドを呼ぶだけ。 stop()で停止、pause()で一時停止、resume()で再開、簡単にmp3が再生できます。 * コメント #pcomment(reply)

表示オプション

横に並べて表示:
変化行の前後のみ表示: