내가 JavaFX에 입문하게 된 가장 큰 원인은 바로 Media Player 이다.
수업 커리큘럼에 JavaFX 는 없었다. 하지만 Melon project 를 진행하면서 Java에서 제공하는 Audio Class 가 사용하기에 불편함이 많다는 것을 알게되었다. 그래서 선생님이 추천해 주신 JavaFX 를 독학으로 익히게 되었던 것이다.
그때 선생님이 적어주신 내용을 필기해 두었는데, 아래와 같다.
<Java 에서 음악을 재생하는 다양한 방법>
1. JMF를 이용하여 만들었다.
장점 : 윈도우에서 엄청 쉽다. 프로그램 쓰듯 땡겨쓰면 된다.
단점 : 리눅스나 IOS에서는 또 그에 맞는 JMF가 설치되어 있어야 하며 실행 방식이 달라 코딩이
조금 달라진다.
2. JLayer를 이용해서 실행
장점 : 개인이 만든 라이브러리 , 자체라이브러리 방식으로 실행가능
단점 : 개발이 더 이상 안되며 안정성을 보장하지 않는다.
3. Mp3agic을 이용해서 실행
장점 : 현재 순수 java로 이루어진 방식으로는 최신으로 개발되었다.
단점 : 길게 가면 개인프로젝트로 없어질 듯
4. JavaFX media player 방식
장점 : 현재 자바방식이고 앞으로도 계속 업그레이드
단점 : javaFX를 학습해야한다.
아무튼 이번에 포스팅할 Media Player 때문에 JavaFX 를 배우게 되었다는 것을 말하고 싶었다.
1. Main.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | package application; import javafx.application.Application; import javafx.fxml.FXMLLoader; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.stage.Stage; public class Main extends Application { @Override public void start(Stage primaryStage) { try { Parent root = FXMLLoader.load(getClass().getResource("/application/Main.fxml")); Scene scene = new Scene(root); scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm()); primaryStage.setScene(scene); primaryStage.show(); } catch(Exception e) { e.printStackTrace(); } } public static void main(String[] args) { launch(args); } } | cs |
2. Main.fxml
1 2 3 4 5 6 7 8 9 10 11 12 | <?xml version="1.0" encoding="UTF-8"?> <?import javafx.scene.layout.BorderPane?> <?import javafx.scene.media.MediaView?> <BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.60" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.MainController"> <center> <MediaView fx:id="mv" fitHeight="200.0" fitWidth="200.0" BorderPane.alignment="CENTER" /> </center> </BorderPane> | cs |
3. MainController.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | package application; import java.io.File; import java.net.URL; import java.util.ResourceBundle; import javafx.beans.binding.Bindings; import javafx.beans.property.DoubleProperty; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.media.Media; import javafx.scene.media.MediaPlayer; import javafx.scene.media.MediaView; public class MainController implements Initializable{ @FXML private MediaView mv; MediaPlayer mp; Media me; @Override public void initialize(URL location, ResourceBundle resources) { String path = new File("Creating Media Player in JavaFX/media/Test.mp4").getAbsolutePath(); me = new Media(new File(path).toURI().toString()); mp = new MediaPlayer(me); mv.setMediaPlayer(mp); mp.setAutoPlay(true); DoubleProperty width = mv.fitWidthProperty(); DoubleProperty height = mv.fitHeightProperty(); width.bind(Bindings.selectDouble(mv.sceneProperty(), "width")); height.bind(Bindings.selectDouble(mv.sceneProperty(), "height")); } } | cs |
'Java > JavaFx' 카테고리의 다른 글
JavaFX 33. Adding Volume Slider to Media Player (0) | 2016.08.29 |
---|---|
JavaFX 32. Adding Play, Pause, Start, Fast, Slow Buttons to Media Player (0) | 2016.08.29 |
JavaFX 30. Event Handler for a Line Chart (0) | 2016.08.29 |
JavaFX 29. Multiple Line Chart (0) | 2016.08.29 |
JavaFX 28. Line Chart (0) | 2016.08.29 |