Created
May 2, 2016 06:16
-
-
Save shkesar/817cd36172a19e0c2d62ae6e8619f100 to your computer and use it in GitHub Desktop.
Music Player using JavaFX
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.github.shkesar.JMusic; | |
import javafx.application.Application; | |
import javafx.scene.Scene; | |
import javafx.scene.control.*; | |
import javafx.scene.layout.BorderPane; | |
import javafx.scene.layout.HBox; | |
import javafx.scene.layout.VBox; | |
import javafx.scene.media.Media; | |
import javafx.scene.media.MediaPlayer; | |
import javafx.stage.FileChooser; | |
import javafx.stage.FileChooser.ExtensionFilter; | |
import javafx.stage.Stage; | |
import java.io.File; | |
import java.util.regex.Matcher; | |
import java.util.regex.Pattern; | |
public class MPlayer extends Application { | |
File selectedFile; | |
MediaPlayer mplayer; | |
Slider musicSlider; | |
public MPlayer() { | |
musicSlider = new Slider(); | |
} | |
@Override | |
public void start(Stage primaryStage) throws Exception { | |
BorderPane root = new BorderPane() {{ | |
Label filenameLabel = new Label(""); | |
FileChooser fileChooser = new FileChooser(); | |
fileChooser.setTitle("Open Resource File"); | |
fileChooser.getExtensionFilters().addAll( | |
new ExtensionFilter("Audio Files", "*.wav", "*.mp3")); | |
VBox vbox = new VBox() {{ | |
getChildren().add(filenameLabel); | |
HBox hbox = new HBox() {{ | |
Button playButton = new Button("Play"); | |
Button pauseButton = new Button("Pause"); | |
playButton.setOnAction(e -> { | |
mplayer.play(); | |
}); | |
pauseButton.setOnAction(e -> { | |
mplayer.pause(); | |
}); | |
Button stopButton = new Button("Stop") {{ | |
setOnAction(e -> { | |
mplayer.stop(); | |
}); | |
}}; | |
getChildren().addAll(playButton, pauseButton, stopButton); | |
}}; | |
getChildren().add(hbox); | |
}}; | |
setCenter(vbox); | |
MenuBar menubar = new MenuBar() {{ | |
Menu menu = new Menu("File") {{ | |
MenuItem selectMenuItem = new MenuItem("Select") {{ | |
setOnAction(e -> { | |
selectedFile = fileChooser.showOpenDialog(primaryStage); | |
if (selectedFile != null) { | |
Media media = null; | |
Pattern spacePattern = Pattern.compile(" "); | |
String url = ("file://" + selectedFile.getAbsolutePath()); | |
Matcher matcher = spacePattern.matcher(url); | |
url = matcher.replaceAll("\\ "); | |
System.out.println(url); | |
media = new Media(url); | |
mplayer = new MediaPlayer(media); | |
musicSlider.setMin(0); | |
musicSlider.setMax(mplayer.getStopTime().toSeconds()); | |
} | |
}); | |
}}; | |
MenuItem pauseMenuItem = new MenuItem("Pause"); | |
MenuItem playMenuItem = new MenuItem("Play"); | |
MenuItem stopMenuItem = new MenuItem("Stop"); | |
getItems().addAll(selectMenuItem, playMenuItem, pauseMenuItem, stopMenuItem); | |
}}; | |
getMenus().add(menu); | |
}}; | |
setTop(menubar); | |
setBottom(musicSlider); | |
}}; | |
new Thread(new Runnable() { | |
@Override | |
public void run() { | |
double currentTime = mplayer.getCurrentTime().toSeconds(); | |
musicSlider.setValue(currentTime); | |
try { | |
Thread.sleep(900); | |
} catch (InterruptedException e) { | |
e.printStackTrace(); | |
} | |
} | |
}).start(); | |
Scene scene = new Scene(root, 400, 100); | |
primaryStage.setScene(scene); | |
primaryStage.show(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment