javaFX:实现会议多媒体切换系统(五)

本文档介绍了如何使用JavaFX实现会议多媒体切换系统,重点在于MeetingShow类的设计,它是整个系统的控制中心,负责多媒体的切换操作。
摘要由CSDN通过智能技术生成

关键类(MeetingShow):

/*
 * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
 */
package ren.kun.meetingshow;

/**
 *
 * @author 65340
 */
import java.awt.Dimension;
import java.awt.Toolkit;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyCodeCombination;
import javafx.scene.input.KeyCombination;
import javafx.scene.layout.StackPane;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.stage.Stage;

/**
 *
 * @author 65340
 * 总体思路:把pptx文件里面的每个页面,通过init(),转换成图片,再用JavaFX组件(ImageView)将图片满屏显示出来;
 * 通过监听键盘按键事件,切换节目(即:图片和音乐)
 */
public class MeetingShow extends Application {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        launch(args);
    }
    FileInputStream fis;
    Image img;
    ImageView imgView = new ImageView();
    String baseDir = "";
    String baseSoundDir = "C:/meetingShowItems/";
    String currentFile = "";
    Media m = null;
    MediaPlayer player = null;
    int pptxIndex = 0;
    boolean isPlay = false;

    
    @Override
    public void init() {
        
        String baseUrl = "C:\\meetingShowItems\\";
        String fileName;
        for (int i = 0; i < 10; i++) {
            //只支持pptx文件
            fileName = i + ".pptx";
            try {
                //下面的函数负责将pptx文件里面的每个页面转换成图片(jpg)
                PPTUtil.PPTtoImage(baseUrl + i + "\\", fileName);
            } catch (Exception ex) {
                Logger.getLogger(MeetingShow.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }

    @Override
    public void start(Stage stage) {
        
        //下面的4个语句负责,获得当前电脑的屏幕尺寸,用于满屏显示时用
        Toolkit toolkit = Toolkit.getDefaultToolkit();
        Dimension screenSize = toolkit.getScreenSize();
        int width = screenSize.width;
        int height = screenSize.height;

        try {
            baseDir = "C:\\meetingShowItems\\0\\output\\";
            fis = new FileInputStream("C:\\meetingShowItems\\0\\output\\ToImage-0.jpg");
            //设置当前舞台的标题
            stage.setTitle("meetingShowSystem");
            //设置全屏显示内容
            stage.setFullScreen(true);
            //把全屏显示时,跳出的“按ESC键取消全屏”去掉
            stage.setFullScreenExitHint("");
            //设置组合键 “ctrl + c”
            KeyCombination ctrl_c = new KeyCodeCombination(KeyCode.C, KeyCombination.CONTROL_DOWN);
            //设置“ctrl + c”同时按时,退出全屏
            stage.setFullScreenExitKeyCombination(ctrl_c);

            img = new Image(fis);
            imgView.setImage(img);
            imgView.setFitHeight(height);
            imgView.setFitWidth(width);
            
            //设置按键(0-9,<-, -> ),imgView的展示内容(jpg图片)随之变化
            //设置按空格键,背景音乐播放或者暂停播放
            imgView.setOnKeyPressed((var e) -> {

                //按 <-, 向后切换当前节目里的小节目(针对一个pptx文件里面有多个页面)
                if (e.getCode().toString().equals("LEFT")) {

                    try {
                        if (pptxIndex > 0) {
                            pptxIndex--;
                        }
                        currentFile = "ToImage-" + pptxIndex + ".jpg";
                        fis = new FileInputStream(baseDir + currentFile);
                        img = new Image(fis);
                        imgView.setImage(img);
                    } catch (FileNotFoundException ex) {
                    //    Logger.getLogger(MeetingShow.class.getName()).log(Level.SEVERE, null, ex);
                        System.out.println("向左(后)浏览ppt出错!");
                        pptxIndex = 0;
                        if (player != null) {
                            player.stop();
                            player = null;
                        }
                        isPlay = false;
                    }
                }
                
                //按 -> ,向前切换当前节目里的小节目(针对一个pptx文件里面有多个页面)
                if (e.getCode().toString().equals("RIGHT")) {

                    try {
                        if ((pptxIndex + 1) < PPTUtil.countFileNum(baseDir, "jpg")) {
                            pptxIndex++;
                        }
                        currentFile = "ToImage-" + pptxIndex + ".jpg";
                        fis = new FileInputStream(baseDir + currentFile);
                        img = new Image(fis);
                        imgView.setImage(img);
                    } catch (FileNotFoundException ex) {
                    //    Logger.getLogger(MeetingShow.class.getName()).log(Level.SEVERE, null, ex);
                        System.out.println("向右(前)浏览ppt出错!");
                        pptxIndex = 0;
                        if (player != null) {
                            player.stop();
                            player = null;
                        }
                        isPlay = false;
                    }
                }
                //按空格,暂停or播放音乐
                if (e.getCode().toString().equals("SPACE")) {

                    if (player != null && isPlay == true) {
                        player.pause();
                        isPlay = false;
                    } else if (player != null && isPlay == false) {
                        player.play();
                        isPlay = true;
                    } else {
                        System.out.println("当前没有可播放音频!");
                        isPlay = false;
                    }
                }

                //按小键盘0键,切换到节目0,如果当前节目里有背景音乐,同时播放音乐
                if (e.getCode().toString().equals("NUMPAD0")) {

                    try {
                        baseDir = "C:\\meetingShowItems\\0\\output\\";
                        fis = new FileInputStream("C:\\meetingShowItems\\0\\output\\ToImage-0.jpg");
                        img = new Image(fis);
                        imgView.setImage(img);
                        pptxIndex = 0;
                        if (player != null) {
                            player.stop();
                            player = null;
                            isPlay = false;
                        }

                        if (new File(baseSoundDir + 0 + "/" + "0.mp3").exists() && player == null) {
                            m = new Media("file:///" + baseSoundDir + 0 + "/" + "0.mp3");
                            player = new MediaPlayer(m);
                            player.play();
                            isPlay = true;
                        } else if (new File(baseSoundDir + 0 + "/" + "0.wav").exists() && player == null) {
                            m = new Media("file:///" + baseSoundDir + 0 + "/" + "0.wav");
                            player = new MediaPlayer(m);
                            player.play();
                            isPlay = true;
                        } else {
                            System.out.println("0号节目没有音频需要播放");
                            isPlay = false;
                        }
                    } catch (FileNotFoundException ex) {
                    //    Logger.getLogger(MeetingShow.class.getName()).log(Level.SEVERE, null, ex);
                        pptxIndex = 0;
                        if (player != null) {
                            player.stop();
                            player = null;
                        }
                        isPlay = false;
                        System.out.println("0号节目播放失败!");
                    }
                }
                
                //按小键盘1键,切换到节目1,如果当前节目里有背景音乐,同时播放音乐
                if (e.getCode().toString().equals("NUMPAD1")) {

                    try {
                        baseDir = "C:\\meetingShowItems\\1\\output\\";
                        fis = new FileInputStream("C:\\meetingShowItems\\1\\output\\ToImage-0.jpg");
                        img = new Image(fis);
                        imgView.setImage(img);

                        pptxIndex = 0;
                        if (player != null) {
                            player.stop();
                            player = null;
                            isPlay = false;
                        }

                        if (new File(baseSoundDir + 1 + "/" + "1.mp3").exists() && player == null) {
                            m = new Media("file:///" + baseSoundDir + 1 + "/" + "1.mp3");
                            player = new MediaPlayer(m);
                            player.play();
                            isPlay = true;
                        } else if (new File(baseSoundDir + 1 + "/" + "1.wav").exists() && player == null) {
                            m = new Media("file:///" + baseSoundDir + 1 + "/" + "1.wav");
                            player = new MediaPlayer(m);
                            player.play();
                            isPlay = true;
                        } else {
                            System.out.println("1号节目没有音频需要播放");
                            isPlay = false;
                        }
                    } catch (FileNotFoundException ex) {
                    //    Logger.getLogger(MeetingShow.class.getName()).log(Level.SEVERE, null, ex);
                        pptxIndex = 0;
                        if (player != null) {
                            player.stop();
                            player = null;
                        }
                        isPlay = false;
                        System.out.println("1号节目播放失败!");
                    }
                }
                
                //按小键盘2键,切换到节目2,如果当前节目里有背景音乐,同时播放音乐
                if (e.getCode().toString().equals("NUMPAD2")) {

                    try {
                        baseDir = "C:\\meetingShowItems\\2\\output\\";
                        fis = new FileInputStream("C:\\meetingShowItems\\2\\output\\ToImage-0.jpg");
                        img = new Image(fis);
                        imgView.setImage(img);
                        pptxIndex = 0;

                        if (player != null) {
                            player.stop();
                            player = null;
                            isPlay = false;
                        }

                        if (new File(baseSoundDir + 2 + "/" + "2.mp3").exists() && player == null) {
                            m = new Media("file:///" + baseSoundDir + 2 + "/" + "2.mp3");
                            player = new MediaPlayer(m);
                            player.play();
                            isPlay = true;
                        } else if (new File(baseSoundDir + 2 + "/" + "2.wav").exists() && player == null) {
                            m = new Media("file:///" + baseSoundDir + 2 + "/" + "2.wav");
                            player = new MediaPlayer(m);
                            player.play();
                            isPlay = true;
                        } else {
                            System.out.println("2号节目没有音频需要播放");
                            isPlay = false;
                        }
                    } catch (FileNotFoundException ex) {
                    //    Logger.getLogger(MeetingShow.class.getName()).log(Level.SEVERE, null, ex);
                        pptxIndex = 0;
                        if (player != null) {
                            player.stop();
                            player = null;
                        }
                        isPlay = false;
                        System.out.println("2号节目播放失败!");
                    }
                }
                
                //按小键盘3键,切换到节目3,如果当前节目里有背景音乐,同时播放音乐
                if (e.getCode().toString().equals("NUMPAD3")) {
                    try {
                        baseDir = "C:\\meetingShowItems\\3\\output\\";
                        fis = new FileInputStream("C:\\meetingShowItems\\3\\output\\ToImage-0.jpg");
                        img = new Image(fis);
                        imgView.setImage(img);

                        pptxIndex = 0;
                        if (player != null) {
                            player.stop();
                            player = null;
                            isPlay = false;
                        }

                        if (new File(baseSoundDir + 3 + "/" + "3.mp3").exists() && player == null) {
                            m = new Media("file:///" + baseSoundDir + 3 + "/" + "3.mp3");
                            player = new MediaPlayer(m);
                            player.play();
                            isPlay = true;
                        } else if (new File(baseSoundDir + 3 + "/" + "3.wav").exists() && player == null) {
                            m = new Media("file:///" + baseSoundDir + 3 + "/" + "3.wav");
                            player = new MediaPlayer(m);
                            player.play();
                            isPlay = true;
                        } else {
                            System.out.println("3号节目没有音频需要播放");
                            isPlay = false;
                        }
                    } catch (FileNotFoundException ex) {
                    //    Logger.getLogger(MeetingShow.class.getName()).log(Level.SEVERE, null, ex);
                        pptxIndex = 0;
                        if (player != null) {
                            player.stop();
                            player = null;
                        }
                        isPlay = false;
                        System.out.println("3号节目播放失败!");
                    }
                }

                //按小键盘4键,切换到节目4,如果当前节目里有背景音乐,同时播放音乐
                if (e.getCode().toString().equals("NUMPAD4")) {
                    try {
                        baseDir = "C:\\meetingShowItems\\4\\output\\";
                        fis = new FileInputStream("C:\\meetingShowItems\\4\\output\\ToImage-0.jpg");
                        img = new Image(fis);
                        imgView.setImage(img);
                        pptxIndex = 0;

                        if (player != null) {
                            player.stop();
                            player = null;
                            isPlay = false;
                        }

                        if (new File(baseSoundDir + 4 + "/" + "4.mp3").exists() && player == null) {
                            m = new Media("file:///" + baseSoundDir + 4 + "/" + "4.mp3");
                            player = new MediaPlayer(m);
                            player.play();
                            isPlay = true;
                        } else if (new File(baseSoundDir + 4 + "/" + "4.wav").exists() && player == null) {
                            m = new Media("file:///" + baseSoundDir + 4 + "/" + "4.wav");
                            player = new MediaPlayer(m);
                            player.play();
                            isPlay = true;
                        } else {
                            System.out.println("4号节目没有音频需要播放");
                            isPlay = false;
                        }
                    } catch (FileNotFoundException ex) {
                    //    Logger.getLogger(MeetingShow.class.getName()).log(Level.SEVERE, null, ex);
                        pptxIndex = 0;
                        if (player != null) {
                            player.stop();
                            player = null;
                        }
                        isPlay = false;
                        System.out.println("4号节目播放失败!");
                    }
                }
                
                //按小键盘5键,切换到节目5,如果当前节目里有背景音乐,同时播放音乐
                if (e.getCode().toString().equals("NUMPAD5")) {
                    try {
                        baseDir = "C:\\meetingShowItems\\5\\output\\";
                        fis = new FileInputStream("C:\\meetingShowItems\\5\\output\\ToImage-0.jpg");
                        img = new Image(fis);
                        imgView.setImage(img);
                        pptxIndex = 0;

                        if (player != null) {
                            player.stop();
                            player = null;
                            isPlay = false;
                        }

                        if (new File(baseSoundDir + 5 + "/" + "5.mp3").exists() && player == null) {
                            m = new Media("file:///" + baseSoundDir + 5 + "/" + "5.mp3");
                            player = new MediaPlayer(m);
                            player.play();
                            isPlay = true;
                        } else if (new File(baseSoundDir + 5 + "/" + "5.wav").exists() && player == null) {
                            m = new Media("file:///" + baseSoundDir + 5 + "/" + "5.wav");
                            player = new MediaPlayer(m);
                            player.play();
                            isPlay = true;
                        } else {
                            System.out.println("5号节目没有音频需要播放");
                            isPlay = false;
                        }
                    } catch (FileNotFoundException ex) {
                    //    Logger.getLogger(MeetingShow.class.getName()).log(Level.SEVERE, null, ex);
                        pptxIndex = 0;
                        if (player != null) {
                            player.stop();
                            player = null;
                        }
                        isPlay = false;
                        System.out.println("5号节目播放失败!");
                    }
                }
                
                //按小键盘6键,切换到节目6,如果当前节目里有背景音乐,同时播放音乐
                if (e.getCode().toString().equals("NUMPAD6")) {
                    try {
                        baseDir = "C:\\meetingShowItems\\6\\output\\";
                        fis = new FileInputStream("C:\\meetingShowItems\\6\\output\\ToImage-0.jpg");
                        img = new Image(fis);
                        imgView.setImage(img);
                        pptxIndex = 0;

                        if (player != null) {
                            player.stop();
                            player = null;
                            isPlay = false;
                        }

                        if (new File(baseSoundDir + 6 + "/" + "6.mp3").exists() && player == null) {
                            m = new Media("file:///" + baseSoundDir + 6 + "/" + "6.mp3");
                            player = new MediaPlayer(m);
                            player.play();
                            isPlay = true;
                        } else if (new File(baseSoundDir + 6 + "/" + "6.wav").exists() && player == null) {
                            m = new Media("file:///" + baseSoundDir + 6 + "/" + "6.wav");
                            player = new MediaPlayer(m);
                            player.play();
                            isPlay = true;
                        } else {
                            System.out.println("6号节目没有音频需要播放");
                            isPlay = false;
                        }
                    } catch (FileNotFoundException ex) {
                    //    Logger.getLogger(MeetingShow.class.getName()).log(Level.SEVERE, null, ex);
                        pptxIndex = 0;
                        if (player != null) {
                            player.stop();
                            player = null;
                        }
                        isPlay = false;
                        System.out.println("6号节目播放失败!");
                    }
                }
                
                //按小键盘7键,切换到节目7,如果当前节目里有背景音乐,同时播放音乐
                if (e.getCode().toString().equals("NUMPAD7")) {
                    try {
                        baseDir = "C:\\meetingShowItems\\7\\output\\";
                        fis = new FileInputStream("C:\\meetingShowItems\\7\\output\\ToImage-0.jpg");
                        img = new Image(fis);
                        imgView.setImage(img);
                        pptxIndex = 0;

                        if (player != null) {
                            player.stop();
                            player = null;
                            isPlay = false;
                        }

                        if (new File(baseSoundDir + 7 + "/" + "7.mp3").exists() && player == null) {
                            m = new Media("file:///" + baseSoundDir + 7 + "/" + "7.mp3");
                            player = new MediaPlayer(m);
                            player.play();
                            isPlay = true;
                        } else if (new File(baseSoundDir + 7 + "/" + "7.wav").exists() && player == null) {
                            m = new Media("file:///" + baseSoundDir + 7 + "/" + "7.wav");
                            player = new MediaPlayer(m);
                            player.play();
                            isPlay = true;
                        } else {
                            System.out.println("7号节目没有音频需要播放");
                            isPlay = false;
                        }
                    } catch (FileNotFoundException ex) {
                   //     Logger.getLogger(MeetingShow.class.getName()).log(Level.SEVERE, null, ex);
                        pptxIndex = 0;
                        if (player != null) {
                            player.stop();
                            player = null;
                        }
                        isPlay = false;
                        System.out.println("7号节目播放失败!");
                    }
                }
                
                //按小键盘8键,切换到节目8,如果当前节目里有背景音乐,同时播放音乐
                if (e.getCode().toString().equals("NUMPAD8")) {
                    try {
                        baseDir = "C:\\meetingShowItems\\8\\output\\";
                        fis = new FileInputStream("C:\\meetingShowItems\\8\\output\\ToImage-0.jpg");
                        img = new Image(fis);
                        imgView.setImage(img);
                        pptxIndex = 0;

                        if (player != null) {
                            player.stop();
                            player = null;
                            isPlay = false;
                        }

                        if (new File(baseSoundDir + 8 + "/" + "8.mp3").exists() && player == null) {
                            m = new Media("file:///" + baseSoundDir + 8 + "/" + "8.mp3");
                            player = new MediaPlayer(m);
                            player.play();
                            isPlay = true;
                        } else if (new File(baseSoundDir + 8 + "/" + "8.wav").exists() && player == null) {
                            m = new Media("file:///" + baseSoundDir + 8 + "/" + "8.wav");
                            player = new MediaPlayer(m);
                            player.play();
                            isPlay = true;
                        } else {
                            System.out.println("8号节目没有音频需要播放");
                            isPlay = false;
                        }
                    } catch (FileNotFoundException ex) {
                    //    Logger.getLogger(MeetingShow.class.getName()).log(Level.SEVERE, null, ex);
                        pptxIndex = 0;
                        if (player != null) {
                            player.stop();
                            player = null;
                        }
                        isPlay = false;
                        System.out.println("8号节目播放失败!");
                    }
                }
                
                //按小键盘9键,切换到节目9,如果当前节目里有背景音乐,同时播放音乐
                if (e.getCode().toString().equals("NUMPAD9")) {
                    try {
                        baseDir = "C:\\meetingShowItems\\9\\output\\";
                        fis = new FileInputStream("C:\\meetingShowItems\\9\\output\\ToImage-0.jpg");
                        img = new Image(fis);
                        imgView.setImage(img);
                        pptxIndex = 0;

                        if (player != null) {
                            player.stop();
                            player = null;
                            isPlay = false;
                        }

                        if (new File(baseSoundDir + 9 + "/" + "9.mp3").exists() && player == null) {
                            m = new Media("file:///" + baseSoundDir + 9 + "/" + "9.mp3");
                            player = new MediaPlayer(m);
                            player.play();
                            isPlay = true;
                        } else if (new File(baseSoundDir + 9 + "/" + "9.wav").exists() && player == null) {
                            m = new Media("file:///" + baseSoundDir + 9 + "/" + "9.wav");
                            player = new MediaPlayer(m);
                            player.play();
                            isPlay = true;
                        } else {
                            System.out.println("9号节目没有音频需要播放");
                            isPlay = false;
                        }
                    } catch (FileNotFoundException ex) {
                    //    Logger.getLogger(MeetingShow.class.getName()).log(Level.SEVERE, null, ex);
                        pptxIndex = 0;
                        if (player != null) {
                            player.stop();
                            player = null;
                        }
                        isPlay = false;
                        System.out.println("9号节目播放失败!");
                    }
                }
            });

            StackPane root = new StackPane();
            root.getChildren().add(imgView);
            Scene scene = new Scene(root);
            stage.setScene(scene);
            stage.show();

            //为了监听键盘按键事件,下面的语句很关键
            imgView.requestFocus();
        } catch (FileNotFoundException e) {
            pptxIndex = 0;
            if (player != null) {
                player.stop();
                player = null;
            }
            isPlay = false;
            System.out.println("没有会标页面!");
        }

    }

}

此类(MeetingShow)总结:

此类是控制“会议多媒体切换系统”行为的<大脑>。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值