写一个程序,将54张扑克牌图片,按照每次1张,每张1秒的放映间隔,按顺序循环显示图片。并且要求:(1)向上箭头加快放映速度;向下箭头减缓放映速度;(2)双击鼠标左键暂停放映,再次双击则继续。

程序界面自定。

1、读取图片

a)用一个大小为55的ImagView数组存储读取的54张图片(0号位置不使用)。

ImageView []imag=new ImageView[55];

b)读取图片的方法:

public static ImageView readImageFromJar(String jarname, String picname){

ImageView imageView = null;

try {

JarFile jarFile = new JarFile(jarname);

JarEntry entry = jarFile.getJarEntry(picname);

InputStream in = jarFile.getInputStream(entry);

imageView = new ImageView(new Image(in));

in.close();

jarFile.close();

}

catch (IOException e) {

System.err.println("read file error.");

}

return imageView;

}

c)读取图片到imag[]

for(int i=1;i<=54;i++){

String card=new String("cards/"+String.valueOf(i)+".png");

imag[i]=readImageFromJar("cards.jar",card);

}

2、事件

a)自动放映图片,事件间隔1s

EventHandler<ActionEvent> eventHandler = e->{

if(n==55)

n=1;

pane.getChildren().add(imag[n]);

n++;

};

Timeline animation = new Timeline(new KeyFrame(Duration.seconds(1),eventHandler));

animation.setCycleCount(Timeline.INDEFINITE);

animation.play();

b)双击暂停和开始

pane.setOnMouseClicked(e->{

if(animation.getStatus()==Animation.Status.PAUSED && e.getClickCount()==2){

animation.play();  //双击原本暂停的开始

}

else if(e.getClickCount()==2){

animation.pause();  //双击暂停

}

});

c)加速(UP)和减速(DOWN)

pane.setOnKeyPressed(e->{

switch(e.getCode()){

case UP:animation.setRate(animation.getRate()+1);

case DOWN:animation.setRate(animation.getRate()-1);

}

});

3、补充说明

a)用一个全局变量n记录卡牌序号,当播放到第54张后返回1。

b)将焦点集中在pane上,可以根据鼠标指令进行相对的事件处理。

import java.io.IOException;
import java.io.InputStream;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import javafx.animation.Animation;
import javafx.animation.KeyFrame;
import javafx.animation.Timeline;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import javafx.util.Duration;public class DisplayCards extends Application {int n=1;ImageView []imag=new ImageView[55];public static ImageView readImageFromJar(String jarname, String picname){ImageView imageView = null;try {JarFile jarFile = new JarFile(jarname);JarEntry entry = jarFile.getJarEntry(picname);InputStream in = jarFile.getInputStream(entry);imageView = new ImageView(new Image(in));in.close();jarFile.close();} catch (IOException e) {System.err.println("read file error.");}return imageView;}@Overridepublic void start(Stage primaryStage) {StackPane pane = new StackPane();for(int i=1;i<=54;i++){String card=new String("cards/"+String.valueOf(i)+".png");imag[i]=readImageFromJar("cards.jar",card);}EventHandler<ActionEvent> eventHandler = e->{if(n==55)n=1;pane.getChildren().add(imag[n]); n++;};Timeline animation = new Timeline(new KeyFrame(Duration.seconds(1),eventHandler));animation.setCycleCount(Timeline.INDEFINITE);animation.play();pane.setOnMouseClicked(e->{if(animation.getStatus()==Animation.Status.PAUSED && e.getClickCount()==2){animation.play();}else if(e.getClickCount()==2){animation.pause();}});pane.setOnKeyPressed(e->{switch(e.getCode()){case UP:animation.setRate(animation.getRate()+1);case DOWN:animation.setRate(animation.getRate()-1);}});Scene scene = new Scene(pane, 300, 250);primaryStage.setTitle("DisplayCards");primaryStage.setScene(scene);primaryStage.show();pane.requestFocus();}public static void main(String[] args) {launch(args);}
}

Java实验(18) 幻灯片放映相关推荐

  1. java实验检查危险品代码_2019JAVA第六次实验报告

    Java实验报告 班级 计科二班 学号 20188442 姓名 吴怡君 完成时间 2019.10.18 评分等级 实验四 类的继承 实验目的 理解异常的基本概念: 掌握异常处理方法及熟悉常见异常的捕获 ...

  2. java人学生大学生类的继承,java实验报告7.doc

    java实验报告7.doc 实 验 报 告( 2014 / 2015学年 第2学期)课程名称JAVA程序设计实验名称 类的继承实验时间2015年4月30日指导单位计算机学院/软件学院软件工程系指导教师 ...

  3. Java实验01 Java编程基础(猜数字游戏、随机点名器)

    实验一 Java编程基础 实验1-1 随机点名器 一.实验描述 1. 任务描述 编写一个随机点名的程序,使其能够在全班同学中随机点中某一名同学的名字.随机点名器具备3个功能,包括存储全班同学姓名.总览 ...

  4. Java实验报告(6)

    Java实验报告(实验6) henu大二Java实验作业 实验目的: 1.掌握容器类的层次结构: 2.掌握Collection接口和List接口的常用方法: 3.掌握Iterator接口的使用方式: ...

  5. 车站检查危险品 JAVA,第八周Java实验报告六

    Java实验报告 实验四类的继承 一.实验目的 (1)       理解异常的基本概念: (2)       掌握异常处理方法及熟悉常见异常的捕获方法. 二.实验要求 (1)       练习捕获异常 ...

  6. 大学计算机实验演示文稿及其高级应用,东南大学《大学计算机基础》实验20幻灯片高级操作.pdf...

    实验20 幻灯片高级操作 实验目的 了解幻灯片的其他工具 实验任务和要求 理解幻灯片的声音及设置效果 了解母版的设置和SmartArt 图形设置 n c 了解幻灯片放映 u. 实验内容及操作步骤 d ...

  7. Python 仿Windows10“幻灯片放映”桌面壁纸

    Windows10 桌面右键菜单中,"个性化"--"背景"设置中可选择"幻灯片放映",如下图: 用python几行代码就能仿制,调用 win ...

  8. java实验Employee_java实验报告

    <java实验报告>由会员分享,可在线阅读,更多相关<java实验报告(19页珍藏版)>请在人人文库网上搜索. 1.java实验报告Java实验报告四一实验目的1(巩固有关的概 ...

  9. Java语言程序设计 :医院简易挂号管理系统 Java实验

    Java语言程序设计 :医院简易挂号管理系统 Java实验 1.课程设计目的 医院预约挂号管理系统是每一个医疗机构管理平常挂号业务流程不可或缺的一个管理信息系统,它的存在解决了病人挂号难.看病难等问题 ...

最新文章

  1. AI入侵机械设计,苦逼的“机械狗”还有未来吗?
  2. Asp.Net MVC中Action跳转小结
  3. python学习笔记 - StringIO以及BytesIO
  4. PyTorch基础(一)-----张量(Tensor)
  5. 移动端页面按手机屏幕分辨率自动缩放的js
  6. div自动滚动_从手机滚动丢帧问题,学习浏览器合成与渲染层优化
  7. nodejs入门学习笔记一——一个完整的http路由服务实现
  8. html 换行_李亚涛:清除HTML所有格式并且删除换行与回车,只显示文本
  9. 腾讯等技术大佬分享的高可用架构干货,全在这里了
  10. Android系统Google TTS 语音数据包安装步骤
  11. linux安装音乐软件教程,Ubuntu 下安装深度音乐播放器
  12. python dxf_使用Python读取AutoCAD DXF文档
  13. tf.nn.dropout() 警报信息处理
  14. 硬盘坏了,如何检测与修复。
  15. 接耦与单元测试可测性
  16. 20175208 张家华 MyCP
  17. 如何为你的 Windows 应用程序关联一种或多种文件类型
  18. Python练习题(五)
  19. 平板一定要用原装电容笔吗?十大电容笔知名品牌
  20. 51单片机的C语言延时的一些总结

热门文章

  1. 小马哥robofly四轴气压计定高的不完全解读
  2. 第1讲、Cadence Allergo绘制小马哥DragonFly四轴飞行器PCB四层板教程简介
  3. 【Swift 60秒】51 - Closures as parameters
  4. scp传输文件时指定端口
  5. 怎么理解PKW和PZD,各有什么作用
  6. android rom 制作工具,ROM工具箱(ROM Toolbox Pro)
  7. python利用datetime模块计算时间差
  8. 计算机界的“武林秘籍”——经典教材推荐
  9. linux pppd ip up 脚本,Linux下pppd拨号脚本配置(转载)
  10. python脚本——ping检测在线主机