
Javafx 自定义好看的播放器实现步骤介绍
目录
一、实现的效果
二、实现思路
三、程序实现
四、总结
一、实现的效果
今天,我们使用 javafx 来制作一个视频播放器,实现播放指定的视频文件,
并且可以暂停、调节视频的音量和视频的进度等。
1、打开视频播放器,默认界面如下

2、界面底部有三个功能按钮,最左边的功能按钮是选择视频按钮,点击打
开,选择一个视频文件:
编辑
2、选择后进行视频的播放,默认自动播放视频:

4、播放期间,可点击中间第二个按钮:
点击该按钮后,播放暂停,继续点击该按钮则播放继续。
5、点击中间第一个按钮,表示停止播放视频:
6.点击视频进度条,可以调整视频的播放进度,进度后面显示当前的播放进度和
视频时长。
7、点击最右下角的音量调节,可以调节视频声音大小。
二、实现思路
要实现以上功能,需要考虑以下几点:
1、如何播放视频。使用 javafx 中的 MediaPlayer 播放器可实现视频播放。
2、如何将显示视频播放器。使用 javafx 中的 MediaView 组件将 MediaPlayer
嵌入到界面上。
3、如何控制播放器的暂停、开始、结束、音量和进度。需要查看 MediaPlayer
相关 api,搞清楚相应功能实现的接口时哪个,怎么使用。
4、选择视频文件时,如何限定只能是视频格式的文件。可以使用 FileChooser
选择文件,并设置 getExtensionFilters()方法,添加过滤格式为 mp4、mp3、avi、
rmvb 等。
三、程序实现

1、 建立 JavaFxVideoPlayer 类,继承自 Application
2、导入各种包
import java.io.File;
import javafx.application.Application;import
javafx.application.Platform;import
javafx.beans.InvalidationListener;import
javafx.beans.Observable;import javafx.event.ActionEvent;import
javafx.event.EventHandler;import javafx.geometry.Insets;import
javafx.geometry.Pos;import javafx.scene.Scene;import
javafx.scene.control.Button;import javafx.scene.control.Label;import
javafx.scene.control.Slider;import javafx.scene.image.Image;import
javafx.scene.image.ImageView;import
javafx.scene.layout.BorderPane;import javafx.scene.layout.HBox;import
javafx.scene.layout.Pane;import javafx.scene.layout.Priority;import
javafx.scene.layout.Region;import javafx.scene.layout.VBox;import
javafx.scene.media.Media;import javafx.scene.media.MediaPlayer;import
javafx.scene.media.MediaPlayer.Status;import
javafx.scene.media.MediaView;import javafx.scene.paint.Color;import
javafx.scene.text.TextAlignment;import
javafx.stage.FileChooser;import javafx.stage.Stage;import
javafx.util.Duration;
3、然后在中定义要用到的变量和初始化方法,调用相应的函数来显示播放器和
相关组件。
public Scene scene;//场景
public MyMediaPane mc;//播放器控件
int sceneWidth = 800,sceneHeight=500;
public String src;//播放地址
public static void main(String[] args) {
launch(args);
}
@Override
public void init() throws Exception {
this.mc = new MyMediaPane(src);

this.scene=new Scene(mc,sceneWidth,sceneHeight);
super.init();
}
@Override
public void stop() throws Exception {
// TODO Auto-generated method stub
super.stop();
}
@Override
public void start(Stage primaryStage) throws Exception {
primaryStage.setTitle("阳光宅男播放器");
primaryStage.setScene(scene);
primaryStage.setAlwaysOnTop(true);//窗口永远在最上层
primaryStage.requestFocus();//窗口获取焦点
primaryStage.setFullScreen(false);//全屏
primaryStage.sizeToScene();//窗口大小适应场景大小
primaryStage.show();//显示,必须设置 scene 场景后才能调
用
}
4、新建 MyMediaPane 类,继承自 BorderPane,这个类,主要就是实现播放器界
面的样式,定义视频加载、播放等功能。
先定义要用到的变量:
public MediaPlayer mp;//播放器
public MediaView mv;//播放器显示组件
public Button choiseButton;//选择视频按钮
public HBox c_hbox;//播放器控制面板
public VBox p_vbox;//播放器控制面板
public Slider ts;//进度条