{"id":25988,"date":"2025-05-06T06:39:15","date_gmt":"2025-05-05T21:39:15","guid":{"rendered":"http:\/\/www.tyosuke20xx.com\/blog\/?p=25988"},"modified":"2025-05-06T06:39:17","modified_gmt":"2025-05-05T21:39:17","slug":"musicplayer-java","status":"publish","type":"post","link":"http:\/\/www.tyosuke20xx.com\/blog\/?p=25988","title":{"rendered":"MusicPlayer.java"},"content":{"rendered":"\n\n\n<pre class=\"wp-block-code\"><code>import java.awt.*;\nimport java.awt.event.*;\nimport java.io.*;\nimport javax.swing.*;\nimport javax.swing.filechooser.FileNameExtensionFilter;\n\nimport javazoom.jl.player.Player;     \/\/ JLayer\n\n\/** \u8d85\u30b7\u30f3\u30d7\u30eb MP3 \u30d7\u30ec\u30a4\u30e4\u30fc *\/\npublic class MusicPlayer extends JFrame {\n    private static final long serialVersionUID = 1L;\n\n    private JButton playBtn = new JButton(\"\u25b6 \u518d\u751f\");\n    private JButton stopBtn = new JButton(\"\u25a0 \u505c\u6b62\");\n    private JLabel  status  = new JLabel(\"\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u3044\u3066\u304f\u3060\u3055\u3044\");\n    private File    currentFile;\n    private Player  player;           \/\/ \u518d\u751f\u7528\u30b9\u30ec\u30c3\u30c9\n    private Thread  playThread;\n\n    public MusicPlayer() {\n        super(\"Java Swing Music Player\");\n\n        \/\/ \u753b\u9762\u30ec\u30a4\u30a2\u30a6\u30c8\n        JPanel ctrl = new JPanel();\n        ctrl.add(playBtn);\n        ctrl.add(stopBtn);\n        add(ctrl, BorderLayout.CENTER);\n        add(status, BorderLayout.SOUTH);\n\n        \/\/ \u30e1\u30cb\u30e5\u30fc\n        JMenuBar bar = new JMenuBar();\n        JMenu     f  = new JMenu(\"\u30d5\u30a1\u30a4\u30eb\");\n        JMenuItem open = new JMenuItem(\"\u958b\u304f...\");\n        open.addActionListener(e -> chooseFile());\n        f.add(open);\n        bar.add(f);\n        setJMenuBar(bar);\n\n        \/\/ \u30dc\u30bf\u30f3\u6319\u52d5\n        playBtn.addActionListener(e -> play());\n        stopBtn.addActionListener(e -> stop());\n\n        \/\/ \u30a6\u30a3\u30f3\u30c9\u30a6\u8a2d\u5b9a\n        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);\n        setSize(320, 120);\n        setResizable(false);\n        setLocationRelativeTo(null);\n    }\n\n    \/** \u30d5\u30a1\u30a4\u30eb\u9078\u629e\u30c0\u30a4\u30a2\u30ed\u30b0 *\/\n    private void chooseFile() {\n        JFileChooser fc = new JFileChooser();\n        fc.setFileFilter(new FileNameExtensionFilter(\"MP3 Audio\", \"mp3\"));\n        if (fc.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {\n            currentFile = fc.getSelectedFile();\n            status.setText(\"\u9078\u629e\u4e2d: \" + currentFile.getName());\n        }\n    }\n\n    \/** \u518d\u751f\u958b\u59cb *\/\n    private void play() {\n        if (currentFile == null) {\n            JOptionPane.showMessageDialog(this, \"\u307e\u305a MP3 \u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\");\n            return;\n        }\n        stop(); \/\/ \u65e2\u306b\u518d\u751f\u4e2d\u306a\u3089\u505c\u6b62\n        playThread = new Thread(() -> {\n            try (BufferedInputStream in = new BufferedInputStream(new FileInputStream(currentFile))) {\n                player = new Player(in);\n                status.setText(\"\u518d\u751f\u4e2d: \" + currentFile.getName());\n                player.play();                  \/\/ \u30d6\u30ed\u30c3\u30ad\u30f3\u30b0\n                SwingUtilities.invokeLater(() -> status.setText(\"\u505c\u6b62\"));\n            } catch (Exception ex) {\n                ex.printStackTrace();\n                SwingUtilities.invokeLater(() -> status.setText(\"\u518d\u751f\u5931\u6557\"));\n            }\n        });\n        playThread.start();\n    }\n\n    \/** \u518d\u751f\u505c\u6b62 *\/\n    private void stop() {\n        if (player != null) {\n            player.close();\n        }\n        if (playThread != null) {\n            playThread.interrupt();\n        }\n        status.setText(\"\u505c\u6b62\");\n    }\n\n    public static void main(String&#91;] args) {\n        SwingUtilities.invokeLater(() -> new MusicPlayer().setVisible(true));\n    }\n}\n<\/code><\/pre>\n\n\n\n<p>C:\\java> dir jlayer-1.0.1.jar<br>2025\/05\/06 92,109 jlayer-1.0.1.jar \u2190 \u3053\u306e\u884c\u304c\u51fa\u308c\u3070 OK<br>\u30b3\u30f3\u30d1\u30a4\u30eb<br>C:\\java> javac -encoding UTF-8 -cp &#8220;.;jlayer-1.0.1.jar&#8221; MusicPlayer.java<\/p>\n","protected":false},"excerpt":{"rendered":"<p>C:\\java> dir jlayer-1.0.1.jar2025\/05\/06 92,109 jlayer-1.0.1.jar \u2190 \u3053\u306e\u884c\u304c\u51fa\u308c\u3070 OK\u30b3\u30f3\u30d1\u30a4\u30ebC:\\java> javac -encoding UTF- &hellip; <a href=\"http:\/\/www.tyosuke20xx.com\/blog\/?p=25988\" class=\"more-link\"><span class=\"screen-reader-text\">&#8220;MusicPlayer.java&#8221; \u306e<\/span>\u7d9a\u304d\u3092\u8aad\u3080<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[76,4],"tags":[75,3],"class_list":["post-25988","post","type-post","status-publish","format-standard","hentry","category-java","category-programming","tag-java","tag-programming"],"aioseo_notices":[],"jetpack_featured_media_url":"","_links":{"self":[{"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/25988","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=25988"}],"version-history":[{"count":2,"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/25988\/revisions"}],"predecessor-version":[{"id":25990,"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/25988\/revisions\/25990"}],"wp:attachment":[{"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=25988"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=25988"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=25988"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}