【知识点】javafx。文件类File的用法,Image, ImageView, FileChooser等控件的用法。
【功能】初始面板为空白的无图片样式,可通过选择文件夹中的图片进行查看,并可以进行图片的上下张切换,同时下方将显示该文件夹中图片是第几张和总张数。在查看图片同时也可以删除图片。


一、界面显示

1.初始面板

2.打开文件夹并选中图片后

3.点击删除的操作提示


二、代码

package week6;import java.io.File;
import java.io.FilenameFilter;
import java.nio.file.Files;import javafx.application.Application;
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.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.Background;
import javafx.scene.layout.BackgroundFill;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.FontPosture;
import javafx.scene.text.FontWeight;
import javafx.stage.FileChooser;
import javafx.stage.Stage;public class PhotoViewer extends Application {File img;File imgDel;File[] imgList;int pos;Button btOpen = new Button("打开文件夹");Button btNext = new Button("下一张");Button btPrev = new Button("上一张");Button btDele = new Button("删除");ImageView iv = new ImageView();Label numb = new Label("");Label end = new Label("无图片!");Label isDel = new Label("是否删除该图片?");Label address = new Label();Button btYes = new Button("是");Button btNo = new Button("否");public static void main(String[] args) {Application.launch(args);}@Overridepublic void start(Stage primaryStage) throws Exception {btNext.setDisable(true);btPrev.setDisable(true);btDele.setDisable(true);iv.setFitHeight(300);iv.setPreserveRatio(true);Font font1 = new Font("", 14);Font font2 = Font.font("Times New Roman",FontWeight.BOLD,FontPosture.REGULAR,18);numb.setFont(font2);end.setFont(font2);btOpen.setFont(font1);btDele.setFont(font1);btNext.setFont(font1);btPrev.setFont(font1);BorderPane pane = new BorderPane();BorderPane top = new BorderPane();HBox bottom = new HBox(10, btPrev, btNext);btOpen.setBackground(Background.EMPTY);btDele.setBackground(Background.EMPTY);top.setLeft(btOpen);top.setRight(btDele);top.setBackground(new Background(new BackgroundFill(Color.LIGHTGREY, null, null)));bottom.setAlignment(Pos.BOTTOM_CENTER);pane.setPadding(new Insets(0,0,10,0));pane.setTop(top);pane.setCenter(end);pane.setBottom(bottom);Scene scene = new Scene(pane, 650, 450);primaryStage.setScene(scene);primaryStage.setTitle("照片查看器");primaryStage.show();FileChooser fc = new FileChooser();fc.setInitialDirectory(new File("."));fc.getExtensionFilters().addAll(new FileChooser.ExtensionFilter("所有图片", "*.*"),new FileChooser.ExtensionFilter("JPG", "*.jpg"), new FileChooser.ExtensionFilter("JPG", "*.jpeg"),new FileChooser.ExtensionFilter("PNG", "*.png"));// 是否删除的界面btYes.setPrefSize(40, 20);btNo.setPrefSize(40, 20);isDel.setFont(font2);isDel.setPrefHeight(40);HBox choose = new HBox(20,btYes, btNo);VBox vbox1 = new VBox(isDel,address);BorderPane pane1 = new BorderPane();pane1.setTop(vbox1);pane1.setBottom(choose);choose.setBackground(new Background(new BackgroundFill(Color.LIGHTGREY, null, null)));choose.setAlignment(Pos.CENTER_RIGHT);choose.setPrefHeight(40);choose.setMargin(btNo, new Insets(0,5,0,0));vbox1.setMargin(isDel, new Insets(0,0,0,5));vbox1.setMargin(address, new Insets(0,0,0,5));     Scene scene1 = new Scene(pane1, 400, 120);Stage stage1 = new Stage();stage1.setTitle("操作确认提示");stage1.setScene(scene1);btOpen.setOnAction(new EventHandler<ActionEvent>() {@Overridepublic void handle(ActionEvent event) {img = fc.showOpenDialog(primaryStage);if (img != null) {VBox vbox = new VBox(10, iv, numb);vbox.setAlignment(Pos.CENTER);pane.setCenter(vbox);System.out.println(img.getPath());updateImageList();refreshImage();primaryStage.setTitle(img.getPath());numb.setText((pos + 1) + "/" + imgList.length);}}});btNext.setOnAction(new EventHandler<ActionEvent>() {@Overridepublic void handle(ActionEvent event) {pos++;img = imgList[pos];refreshImage();primaryStage.setTitle(img.getPath());numb.setText((pos + 1) + "/" + imgList.length);}});btPrev.setOnAction(new EventHandler<ActionEvent>() {@Overridepublic void handle(ActionEvent event) {pos--;img = imgList[pos];refreshImage();primaryStage.setTitle(img.getPath());numb.setText((pos + 1) + "/" + imgList.length);}});btDele.setOnAction(new EventHandler<ActionEvent>() {@Overridepublic void handle(ActionEvent event) {if (img != null) {address.setText(img.getPath());btDele.setDisable(false);stage1.show();}}});btYes.setOnAction(new EventHandler<ActionEvent>() {@Overridepublic void handle(ActionEvent event) {stage1.close();File imgDel = img;if (imgList.length > 1) {if (pos < imgList.length - 1)img = imgList[pos + 1];elseimg = imgList[pos - 1];imgDel.delete();updateImageList();refreshImage();primaryStage.setTitle(img.getPath());numb.setText((pos + 1) + "/" + imgList.length);} else {imgDel.delete();pane.setCenter(end);primaryStage.setTitle(img.getParent());}}});btNo.setOnAction(new EventHandler<ActionEvent>() {@Overridepublic void handle(ActionEvent event) {stage1.close();}});}protected void refreshImage() {iv.setImage(new Image("file:" + img.getPath()));System.out.println(pos + "/" + imgList.length + ", " + img.getPath());if (img != null) {btDele.setDisable(false);}if (pos == 0)btPrev.setDisable(true);elsebtPrev.setDisable(false);if (pos == imgList.length - 1)btNext.setDisable(true);elsebtNext.setDisable(false);}protected void updateImageList() {this.imgList = new File(img.getParent()).listFiles(new FilenameFilter() {@Overridepublic boolean accept(File dir, String name) {return name.endsWith(".jpg") || name.endsWith(".jpeg") || name.endsWith(".png");}});pos = 0;for (File f : imgList) {if (img.equals(f))break;pos++;}}}

【java】照片查看器:开发一个简易照片查看器,自行设计功能和界面。相关推荐

  1. java计算机毕业设计vue开发一个简单音乐播放器(附源码、数据库)

    java计算机毕业设计vue开发一个简单音乐播放器(附源码.数据库) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Ec ...

  2. java计算机毕业设计vue开发一个简单音乐播放器源码+mysql数据库+系统+lw文档+部署

    java计算机毕业设计vue开发一个简单音乐播放器源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计vue开发一个简单音乐播放器源码+mysql数据库+系统+lw文档+部署 本源码技 ...

  3. java计算机毕业设计vue开发一个简单音乐播放器MyBatis+系统+LW文档+源码+调试部署

    java计算机毕业设计vue开发一个简单音乐播放器MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计vue开发一个简单音乐播放器MyBatis+系统+LW文档+源码+调试部署 本源 ...

  4. VC++开发一个简易图片浏览器 - 含目录浏览功能

    win7, vc6;  新建一个对话框工程:界面: 添加按钮单击函数: 为控件添加成员变量: 添加列表框消息处理函数: 搞几个测试图片: 对话框头文件手动添加成员函数 ShowJpg: // Cons ...

  5. 稳扎稳打Silverlight(18) - 2.0视频之详解MediaElement, 开发一个简易版的全功能播放器...

    [索引页] [×××] 稳扎稳打Silverlight(18) - 2.0视频之详解MediaElement, 开发一个简易版的全功能播放器 作者:webabcd 介绍 Silverlight 2.0 ...

  6. JAVA毕业设计vue开发一个简单音乐播放器计算机源码+lw文档+系统+调试部署+数据库

    JAVA毕业设计vue开发一个简单音乐播放器计算机源码+lw文档+系统+调试部署+数据库 JAVA毕业设计vue开发一个简单音乐播放器计算机源码+lw文档+系统+调试部署+数据库 本源码技术栈: 项目 ...

  7. 基于JAVAvue开发一个简单音乐播放器计算机毕业设计源码+数据库+lw文档+系统+部署

    基于JAVAvue开发一个简单音乐播放器计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVAvue开发一个简单音乐播放器计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: 项目 ...

  8. python写一个文件下载器_Python3使用TCP编写一个简易的文件下载器

    原标题:Python3使用TCP编写一个简易的文件下载器 利用Python3来实现TCP协议,和UDP类似.UDP应用于及时通信,而TCP协议用来传送文件.命令等操作,因为这些数据不允许丢失,否则会造 ...

  9. 计算机毕业设计Javavue开发一个简单音乐播放器(源码+系统+mysql数据库+lw文档)

    计算机毕业设计Javavue开发一个简单音乐播放器(源码+系统+mysql数据库+lw文档) 计算机毕业设计Javavue开发一个简单音乐播放器(源码+系统+mysql数据库+lw文档) 本源码技术栈 ...

  10. 物联网全栈教程--手把手教你开发一个智能浇花器

    下面来说一下课程的安排,本教程可以分为三大章节,30个小章节,在1-10章节,手把手讲解了如何实现一个定时/实时控制的浇花器,可以对浇花器电量进行显示,可以进行定时设置,以及实时控制,低功耗模式等等, ...

最新文章

  1. 天天沉迷于皇上本宫的都是sb
  2. 腾讯敏捷研发协作平台TAPD荣获CCF科学技术奖
  3. python问题分享_零基础入门Python常见问题分享
  4. java hibernate 分页取数_java – Hibernate分页机制
  5. 免费素材:包含 250+ 组件的 DO UI Kit
  6. 干货十足:一大波好用的Windows软件帮你开路!
  7. Android 基础知识之 VelocityTracker使用(提供手指速度计算,可用于笔迹优化哦)
  8. Redis高可用群集——主从复制+哨兵模式
  9. 【Nodejs】使用http.request批量下载MP3,发现网络文件大于1000K时下载文件为0K
  10. 搭窝---开篇语---爆笑语录
  11. 为何要使用加密邮箱?
  12. win10企业版无法访问共享文件夹
  13. 杭电操作系统实验三--- 实现模拟shell(arm架构华为云)
  14. pdf签名无效解决办法_为什么下载下来的电子合同提示有效性未知或至少一个签名有问题?...
  15. Kimbal Musk 介绍:埃隆马斯克的弟弟
  16. Chapter 1 复杂度分析和递归分析
  17. lcg_magic算法笔记:反转单链表
  18. 阿里巴巴启动“NASA”计划 谋划20年后的发展格局
  19. Android网络篇
  20. 唐玄宗:谁想跟朕去打马球?在线等,挺急的

热门文章

  1. 基于微信小程序点餐系统的设计与实现(含word论文)
  2. ssh详细原理流程及配置
  3. typora快捷键大全
  4. i2c-tools使用及调试
  5. 新版代shua社区源码(云商城1.0)
  6. 不会做抖音网红快闪PPT?这个插件可以免费一键生成快闪PPT!
  7. PCB解决(Failed to add class member)问题
  8. SQL Sever 2012学习总结之使用SQL语言创建数据库与表
  9. PHP四合一小说漫画听书视频网站源码 带采集
  10. excel根据数据得出公式