JavaFX 媒体播放器
在本文中,我们将学习如何使用 JavaFX 在 Java 中制作媒体播放器。为此,我们将使用内置的 JavaFX 并手动进行设置。
使用内置 JavaFX 制作媒体播放器
要使用内置的 JavaFX,我们需要 Java 8,因为其中包含 JavaFX。我们不必单独安装它。
对于本节,我们使用以下工具。
- Java 8
- NetBeans 13(你可以使用你选择的任何 IDE)
示例代码(Main.java
,主类):
//write the package name (yours may be different)
package com.mycompany.main;
//import necessary libraries
import java.net.URL;
import javafx.application.Application;
import static javafx.application.Application.launch;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
//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()
函数接受一个 Stage
类型参数。它是显示 JavaFX 应用程序的所有可视部分的地方。
Stage
类型对象是由 JavaFX 运行时为我们创建的。我们不必手动创建它。
在 start()
方法中,我们获取音频文件的路径并将其保存在 resource
变量中,该变量以字符串格式传递给 Media
构造函数,并进一步传递给 MediaPlayer
构造函数.接下来,我们添加一个 mediaView
来呈现/显示媒体,这是必要的。
然后,这个 mediaView
被添加到 Pane
。我们需要将 Scene
添加到 Stage
对象中,该对象将用于在 JavaFX 应用程序的窗口中显示某些内容。
请记住,需要在 JavaFX 应用程序中显示的所有组件都必须位于 Scene
内。对于这个例子,我们将一个 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="http://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
文件位于 default package
和 Project Files
中。下面是一个 Java 应用程序中所有文件的截图,以便清楚地了解。
相关文章
JavaFX 文本旋转
发布时间:2023/09/21 浏览次数:96 分类:Java
-
本介绍了如何在 JavaFX 中旋转文本。可以使用 JavaFX.scene.text.Text 类创建文本节点,并在 JavaFX 中使用 setRotate() 来旋转文本。本文介绍了如何在 JavaFX 中旋转文本。
JavaFX 区域与窗格
发布时间:2023/09/21 浏览次数:94 分类:Java
-
本文介绍了 JavaFX 中区域和窗格之间的区别。Region 和 Pane 用于将可调整大小的子节点调整到它们的首选大小,而不是重新定位它们。本文介绍了 JavaFX 中 Region 和 Pane 之间的区别。
Java 中抛出多个异常
发布时间:2023/09/21 浏览次数:196 分类:Java
-
在本教程中,我们将在 Java 中抛出多个异常。本文将介绍如何在 Java 中抛出多个异常。异常是在程序执行期间破坏指令正常流程的不需要的和意外的事件。所有 Java 异常的根类都是 java.lang.Thr
Java 中的异常类型及其处理
发布时间:2023/09/20 浏览次数:163 分类:Java
-
本文通过不同的代码示例演示 Java 中的异常类型。它还介绍了异常处理过程。我们将了解 Java 中的异常类型及其处理。我们将在定义级别看到内置和用户定义的异常,并通过编写代码示例来理解
Java 中未处理的异常
发布时间:2023/09/20 浏览次数:90 分类:Java
-
本文介绍了未处理的异常以及如何在 Java 中处理这些异常。本文介绍了未处理的异常是什么以及如何在 Java 中处理它。异常是异常停止代码执行并导致代码终止的条件。
如何在 Java 中把双精度数四舍五入到小数点后两位数
发布时间:2023/09/20 浏览次数:194 分类:Java
-
本文介绍了如何在 Java 中用四种不同的方法将双精度数四舍五入到小数点后两位。在这篇文章中,我们将讨论使用 Java 将一个双精度数四舍五入到小数点后两位的方法。
Java 中格式化双精度值
发布时间:2023/09/20 浏览次数:76 分类:Java
-
这篇文章将要介绍格式化 Java 中的 double 值。本文介绍了如何在 Java 中格式化双精度类型值。Java 中有多种格式化双精度值的方法,例如 DecimalFormat 类,printf() 方法,format() 方法,String.format() 方
在 Java 中截断 Double
发布时间:2023/09/20 浏览次数:170 分类:Java
-
本文介绍如何在 Java 中截断 double 在本文中,我们将研究如何在 Java 中将数字截断或舍入为 n 个小数点。Java 提供了两种基本类型来存储十进制值,即 double 和 float。