JavaFX メディアプレーヤー

Mehvish Ashiq 2024年2月15日 Java Java JavaFX
  1. 組み込みの JavaFX を使用してメディアプレーヤーを作成する
  2. JavaFX をセットアップし、それを使用してメディアプレーヤーを作成する
JavaFX メディアプレーヤー

この記事では、JavaFX を使用して Java でメディアプレーヤーを作成する方法を学習します。そのためには、組み込みの JavaFX を使用して、手動でセットアップします。

組み込みの JavaFX を使用してメディアプレーヤーを作成する

組み込みの JavaFX を使用するには、JavaFX が含まれている Java8 が必要です。個別にインストールする必要はありません。

このセクションでは、次のツールを使用しています。

  • Java 8
  • NetBeans 13(任意の IDE を使用できます)

サンプルコード(Main.java、メインクラス):

// write the package name (yours may be different)
package com.mycompany.main;

// import necessary libraries
import static javafx.application.Application.launch;

import java.net.URL;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
import javafx.stage.Stage;

// Main Class
public class Main extends Application {
  // main method
  public static void main(String[] args) {
    launch(args);
  } // end main method

  /**
   *
   * @param primaryStage
   * @throws Exception
   */
  @Override
  public void start(Stage primaryStage) throws Exception {
    // path to the file
    final URL resource = getClass().getResource("/music/audio.mp3");

    // create Media Object and pass it the path of the audio file
    Media mediafile = new Media(resource.toString());

    // create MediaPlayer Object and pass the mediafile instance to it
    MediaPlayer player = new MediaPlayer(mediafile);

    // Add a mediaView, to display the media. Its necessary !
    // This mediaView is added to a Pane
    MediaView mediaView = new MediaView(player);

    // Add to scene
    Scene scene = new Scene(new Pane(mediaView), 400, 200);

    // Show the stage
    primaryStage.setTitle("Media Player");
    primaryStage.setScene(scene);
    primaryStage.show();

    // Play the media once the stage is shown
    player.play();

  } // end start
} // end Main Class

JavaFX を使用するには、プライマリ起動クラスが必要です。これは、Application クラス(Java 8 以降の Java の標準クラス)を拡張する必要があります。プライマリ起動クラスの名前は Main であり、これは Application クラスも拡張します。

Main クラスは Application クラスのサブクラスであると言えます。したがって、すべての抽象メソッドを実装する必要があります。そのため、Main クラスは start() メソッドをオーバーライドします。

start() 関数は、1つの Stage タイプのパラメーターを受け入れます。これは、JavaFX アプリのすべてのビジュアルセクションが表示される場所です。

Stage タイプのオブジェクトは、JavaFX ランタイムによって作成されます。手動で作成する必要はありません。

start() メソッド内で、オーディオファイルのパスを取得し、それを resource 変数に保存します。この変数は、文字列形式で Media コンストラクターに渡され、さらに MediaPlayer コンストラクターに渡されます。。次に、メディアを表示/表示するための mediaView を追加します。これは必要です。

次に、この mediaViewPane に追加されます。JavaFX アプリケーションのウィンドウに何かを表示するために使用される Stage オブジェクトに Scene を追加する必要があります。

JavaFX アプリに表示する必要のあるすべてのコンポーネントは、シーン内に配置する必要があることを忘れないでください。この例では、メディアビューとともに Scene オブジェクトを Stage に追加しています。

その後、タイトルを設定し、シーンを設定し、ステージが表示されたらメディアを再生します。

ここで、main メソッドについて説明します。main() 関数なしで JavaFX アプリを起動できることをご存知ですか。ただし、コマンドラインパラメーターをアプリケーションに渡す必要がある場合に役立ちます。

JavaFX をセットアップし、それを使用してメディアプレーヤーを作成する

JavaFX を手動でインストールするには、次のものが必要です。

  • Java 18
  • NetBeans バージョン 13(任意の IDE を使用できます)
  • module-info.java および pom.xml ファイルを更新して、javafx.controls および javafx.media をインストールします(すべてのファイルの完全なコードを以下に示します)
  • 依存関係をインストールするために Maven を使用しています。Gradle を使用できます。

サンプルコード(module-info.java ファイル):

module com.mycompany.test {
  requires javafx.controls;
  requires javafx.media;
  exports com.mycompany.test;
}

サンプルコード(pom.xml ファイル):

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.mycompany</groupId>
    <artifactId>Test</artifactId>
    <version>1.0-SNAPSHOT</version>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.release>11</maven.compiler.release>
        <javafx.version>16</javafx.version>
        <javafx.maven.plugin.version>0.0.6</javafx.maven.plugin.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-controls</artifactId>
            <version>${javafx.version}</version>
        </dependency>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-media</artifactId>
            <version>${javafx.version}</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <release>${maven.compiler.release}</release>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.openjfx</groupId>
                <artifactId>javafx-maven-plugin</artifactId>
                <version>${javafx.maven.plugin.version}</version>
                <configuration>
                    <mainClass>com.mycompany.test.App</mainClass>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

サンプルコード(App.java、メインクラス):

// write the package name (yours may be different)
package com.mycompany.test;

// import necessary libraries
import java.net.URL;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
import javafx.stage.Stage;

/**
 * JavaFX App
 */
public class App extends Application {
  /**
   *
   * @param primaryStage
   */
  @Override
  public void start(Stage primaryStage) {
    // path to the file
    final URL resource = getClass().getResource("/music/video.mkv");

    // create Media Object and pass it the path of the video/audio file
    Media mediafile = new Media(resource.toString());

    // create MediaPlayer Object and pass the mediafile instance to it
    MediaPlayer player = new MediaPlayer(mediafile);

    // Add a mediaView, to display the media. Its necessary !
    // This mediaView is added to a Pane
    MediaView mediaView = new MediaView(player);

    // Add to scene
    Scene scene = new Scene(new Pane(mediaView), 1080, 750);

    // Show the stage
    primaryStage.setTitle("Media Player");
    primaryStage.setScene(scene);
    primaryStage.show();

    // Play the media once the stage is shown
    player.play();
  }

  // main method
  public static void main(String[] args) {
    launch(args);
  } // end main method

} // end App class

Java アプリケーションでは、module-info.java および pom.xml ファイルはデフォルトパッケージおよびプロジェクトファイルにあります。以下は、明確に理解するための Java アプリケーション内のすべてのファイルのスクリーンショットです。

javafx メディアプレーヤー-プロジェクトファイル

このコードは、前のセクションと同じですが、違いは JavaFX を手動でインストールし、ビデオファイルを再生します。

チュートリアルを楽しんでいますか? <a href="https://www.youtube.com/@delftstack/?sub_confirmation=1" style="color: #a94442; font-weight: bold; text-decoration: underline;">DelftStackをチャンネル登録</a> して、高品質な動画ガイドをさらに制作するためのサポートをお願いします。 Subscribe
著者: Mehvish Ashiq
Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

関連記事 - Java JavaFX