ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

JavaFX编程第三小题源代码

2020-04-26 12:01:22  阅读:258  来源: 互联网

标签:time javafx 编程 JavaFX mp import sld new 源代码


package javaseniorprograme;

import javafx.application.Application;
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.input.MouseEvent;
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.Stage;
import javafx.util.Duration;

/**
 * 16.24
 * @author ASUS
 */
public class MediaDemo extends Application{
    @Override
    public void start(Stage stage){
        // 利用目标多媒体URL来构建一个Media实例
        Media mt = new Media("file:/C:/Users/ASUS/Documents/NetBeansProjects/javaSeniorPrograme/Vex.mp4");
        MediaPlayer mp = new MediaPlayer(mt);
        MediaView mv = new MediaView(mp); 
        // 构建Label实例
        Label text1 = new Label("Time");
        Label text2 = new Label("Volume");
        Label text3 = new Label("00:00:00/00:02:27");
        Label text4 = new Label("0");
        // 构建Slider滑块控件实例
        // 用于表示视频播放进度的滑块
        Slider sld_time = new Slider();
        // 初始值为0
        sld_time.setValue(0);
        // 最大值为147,与目标多媒体大小相关
        // 147可理解为视频的总时间为147秒
        sld_time.setMax(147); 
        sld_time.setBlockIncrement(5); 
        // 通过方法构建播放按钮
        Button btn = playButton(mp,sld_time);
        /**
        * 对多媒体的currentTimeProperty添加一个监听器
        * 来实现滑块与当前时间的持续更新
        */
        mp.currentTimeProperty().addListener(e->{
                if(sld_time.getValue()==sld_time.getMax()){
                    btn.setText(">>");
                    sld_time.setValue(0); 
                    mp.seek(Duration.ZERO); 
                    mp.pause();
                }
                sld_time.setValue(Math.floor(mp.getCurrentTime().toSeconds()));
                Integer a = new Integer((int)Math.floor(mp.getCurrentTime().toSeconds())/60);
                Integer b = new Integer((int)Math.floor(mp.getCurrentTime().toSeconds())%60/10);
                Integer c = new Integer((int)Math.floor(mp.getCurrentTime().toSeconds())%60%10);
                text3.setText("00:0"+a.toString()+":"+b.toString()+c.toString()+"/00:02:27");
        });
        // 用于表示视频播放音量的滑块
        Slider sld_vol = new Slider();
        sld_vol.setValue(0);
        // 属性绑定
        mp.volumeProperty().bind(sld_vol.valueProperty().divide(10)); 
        // HBox用来布局
        HBox hbox = new HBox();
        hbox.setAlignment(Pos.CENTER);
        hbox.setPadding(new Insets(10)); 
        hbox.setSpacing(10); 
        // 添加控件
        hbox.getChildren().addAll(btn,text1,sld_time,text3,text2,sld_vol,text4);
        // BorderPane
        BorderPane pane = new BorderPane();
        pane.setCenter(mv); 
        pane.setBottom(hbox); 
        // Scene
        Scene scene = new Scene(pane,650,500);
        mv.fitHeightProperty().bind(pane.heightProperty());
        mv.fitWidthProperty().bind(pane.widthProperty());
        // 标题
        stage.setTitle("中国新说唱第九期");
        // 场景
        stage.setScene(scene);
        stage.show();
        // 播放
        mp.play();
        // 鼠标事件处理器,处理鼠标点击和鼠标拖动事件
        EventHandler<MouseEvent> action1 = new EventHandler<MouseEvent>(){
            @Override
            public void handle(MouseEvent e){
                double d = sld_time.getValue();
                mp.seek(Duration.seconds(sld_time.getValue())); 
                Integer a = new Integer((int)Math.floor(mp.getCurrentTime().toSeconds())/60);
                Integer b = new Integer((int)Math.floor(mp.getCurrentTime().toSeconds())%60/10);
                Integer c = new Integer((int)Math.floor(mp.getCurrentTime().toSeconds())%60%10);
                text3.setText("00:0"+a.toString()+":"+b.toString()+c.toString()+"/00:02:27");
            }
        };
        // 鼠标事件处理器,处理鼠标点击和鼠标拖动事件
        EventHandler<MouseEvent> action2 = new EventHandler<MouseEvent>(){
            @Override
            public void handle(MouseEvent e){
                text4.setText(new Integer((int)sld_vol.getValue()).toString());
            }
        };
        // 注册
        sld_time.setOnMouseDragged(action1);
        sld_time.setOnMouseClicked(action1);
        sld_vol.setOnMouseDragged(action2);
        sld_vol.setOnMouseClicked(action2);
    }
    // playButton方法,封装实现播放按钮的功能
    public static Button playButton(MediaPlayer mp, Slider s){
        Button btn = new Button("||");
        btn.setOnMouseClicked(e->{
            if(btn.getText().equals("||")){
                btn.setText(">>"); 
                mp.pause();
            }else{
                btn.setText("||"); 
                mp.play();
            }
        });
        return btn;
    }
    // main()方法
    public static void main(String[] args){
        Application.launch(args);
    }
}

 

标签:time,javafx,编程,JavaFX,mp,import,sld,new,源代码
来源: https://www.cnblogs.com/angoli/p/12778583.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有