关键类(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)总结:
此类是控制“会议多媒体切换系统”行为的<大脑>。