📜  JavaFX |构建媒体播放器(1)

📅  最后修改于: 2023-12-03 15:16:03.499000             🧑  作者: Mango

JavaFX | 构建媒体播放器

JavaFX 是一个现代化的客户端 UI 平台,具有丰富的 UI 控件和多媒体支持。在这篇文章里,我们将通过 JavaFX 构建一个媒体播放器,来展示 JavaFX 的强大功能。

准备工作

在开始构建播放器之前,我们需要先安装 JavaFX 并设置好开发环境。具体的安装步骤可以参考 官方文档。在安装好 JavaFX 后,我们需要引入 JavaFX 的库文件,这里我们将使用 Maven 来管理依赖。在 pom.xml 文件中添加以下依赖:

<dependency>
    <groupId>org.openjfx</groupId>
    <artifactId>javafx-controls</artifactId>
    <version>16</version>
</dependency>
<dependency>
    <groupId>org.openjfx</groupId>
    <artifactId>javafx-media</artifactId>
    <version>16</version>
</dependency>
构建播放器

接下来我们开始构建媒体播放器。首先我们创建一个 Java 类并继承 Application 类,在 start 方法里创建窗口和 UI 控件。具体的代码如下所示:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;

public class MediaPlayerApp extends Application {
    
    @Override
    public void start(Stage primaryStage) throws Exception {
        BorderPane root = new BorderPane();
        Scene scene = new Scene(root, 640, 480);
        
        // TODO: 添加 UI 控件
        
        primaryStage.setScene(scene);
        primaryStage.show();
    }
    
    public static void main(String[] args) {
        launch(args);
    }
}

现在我们需要添加 UI 控件来展示播放器的功能。我们需要添加一个 MediaView 控件来展示媒体文件,以及一些按钮来控制播放器。具体的代码如下所示:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
import javafx.stage.FileChooser;
import javafx.stage.Stage;

import java.io.File;

public class MediaPlayerApp extends Application {
    
    private MediaView mediaView;
    private MediaPlayer mediaPlayer;
    
    @Override
    public void start(Stage primaryStage) throws Exception {
        BorderPane root = new BorderPane();
        Scene scene = new Scene(root, 640, 480);
        
        // 创建 UI 控件
        mediaView = new MediaView();
        Button openFileButton = new Button("打开文件");
        openFileButton.setOnAction(event -> openFile(primaryStage));
        Button playButton = new Button("播放");
        playButton.setOnAction(event -> play());
        Button pauseButton = new Button("暂停");
        pauseButton.setOnAction(event -> pause());
        Button stopButton = new Button("停止");
        stopButton.setOnAction(event -> stop());
        HBox controlPane = new HBox(10, openFileButton, playButton, pauseButton, stopButton);
        root.setTop(controlPane);
        root.setCenter(mediaView);

        primaryStage.setScene(scene);
        primaryStage.show();
    }
    
    private void openFile(Stage stage) {
        FileChooser fileChooser = new FileChooser();
        fileChooser.setTitle("打开文件");
        File file = fileChooser.showOpenDialog(stage);
        if (file != null) {
            Media media = new Media(file.toURI().toString());
            mediaPlayer = new MediaPlayer(media);
            mediaView.setMediaPlayer(mediaPlayer);
        }
    }
    
    private void play() {
        if (mediaPlayer != null) {
            mediaPlayer.play();
        }
    }
    
    private void pause() {
        if (mediaPlayer != null) {
            mediaPlayer.pause();
        }
    }
    
    private void stop() {
        if (mediaPlayer != null) {
            mediaPlayer.stop();
        }
    }
    
    public static void main(String[] args) {
        launch(args);
    }
}

在代码中,我们创建了一个 MediaView 控件来展示媒体文件,并为用户提供了一个打开文件的按钮,用于打开本地媒体文件。在用户打开文件后,我们创建了一个 MediaPlayer 对象并将其与 MediaView 控件关联起来。此外,我们还提供了一些按钮来控制播放器的播放、暂停和停止动作。

现在我们已经构建了一个基本的媒体播放器。用户可以通过点击打开文件按钮来打开本地媒体文件并在播放器中播放。

总结

本文介绍了如何通过 JavaFX 构建一个简单的媒体播放器,并演示了如何打开本地媒体文件并进行播放控制。JavaFX 提供了丰富的 UI 控件和多媒体支持,使得构建媒体播放器变得非常容易。