【java】照片查看器:开发一个简易照片查看器,自行设计功能和界面。
【知识点】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】照片查看器:开发一个简易照片查看器,自行设计功能和界面。相关推荐
- java计算机毕业设计vue开发一个简单音乐播放器(附源码、数据库)
java计算机毕业设计vue开发一个简单音乐播放器(附源码.数据库) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Ec ...
- java计算机毕业设计vue开发一个简单音乐播放器源码+mysql数据库+系统+lw文档+部署
java计算机毕业设计vue开发一个简单音乐播放器源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计vue开发一个简单音乐播放器源码+mysql数据库+系统+lw文档+部署 本源码技 ...
- java计算机毕业设计vue开发一个简单音乐播放器MyBatis+系统+LW文档+源码+调试部署
java计算机毕业设计vue开发一个简单音乐播放器MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计vue开发一个简单音乐播放器MyBatis+系统+LW文档+源码+调试部署 本源 ...
- VC++开发一个简易图片浏览器 - 含目录浏览功能
win7, vc6; 新建一个对话框工程:界面: 添加按钮单击函数: 为控件添加成员变量: 添加列表框消息处理函数: 搞几个测试图片: 对话框头文件手动添加成员函数 ShowJpg: // Cons ...
- 稳扎稳打Silverlight(18) - 2.0视频之详解MediaElement, 开发一个简易版的全功能播放器...
[索引页] [×××] 稳扎稳打Silverlight(18) - 2.0视频之详解MediaElement, 开发一个简易版的全功能播放器 作者:webabcd 介绍 Silverlight 2.0 ...
- JAVA毕业设计vue开发一个简单音乐播放器计算机源码+lw文档+系统+调试部署+数据库
JAVA毕业设计vue开发一个简单音乐播放器计算机源码+lw文档+系统+调试部署+数据库 JAVA毕业设计vue开发一个简单音乐播放器计算机源码+lw文档+系统+调试部署+数据库 本源码技术栈: 项目 ...
- 基于JAVAvue开发一个简单音乐播放器计算机毕业设计源码+数据库+lw文档+系统+部署
基于JAVAvue开发一个简单音乐播放器计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVAvue开发一个简单音乐播放器计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: 项目 ...
- python写一个文件下载器_Python3使用TCP编写一个简易的文件下载器
原标题:Python3使用TCP编写一个简易的文件下载器 利用Python3来实现TCP协议,和UDP类似.UDP应用于及时通信,而TCP协议用来传送文件.命令等操作,因为这些数据不允许丢失,否则会造 ...
- 计算机毕业设计Javavue开发一个简单音乐播放器(源码+系统+mysql数据库+lw文档)
计算机毕业设计Javavue开发一个简单音乐播放器(源码+系统+mysql数据库+lw文档) 计算机毕业设计Javavue开发一个简单音乐播放器(源码+系统+mysql数据库+lw文档) 本源码技术栈 ...
- 物联网全栈教程--手把手教你开发一个智能浇花器
下面来说一下课程的安排,本教程可以分为三大章节,30个小章节,在1-10章节,手把手讲解了如何实现一个定时/实时控制的浇花器,可以对浇花器电量进行显示,可以进行定时设置,以及实时控制,低功耗模式等等, ...
最新文章
- 天天沉迷于皇上本宫的都是sb
- 腾讯敏捷研发协作平台TAPD荣获CCF科学技术奖
- python问题分享_零基础入门Python常见问题分享
- java hibernate 分页取数_java – Hibernate分页机制
- 免费素材:包含 250+ 组件的 DO UI Kit
- 干货十足:一大波好用的Windows软件帮你开路!
- Android 基础知识之 VelocityTracker使用(提供手指速度计算,可用于笔迹优化哦)
- Redis高可用群集——主从复制+哨兵模式
- 【Nodejs】使用http.request批量下载MP3,发现网络文件大于1000K时下载文件为0K
- 搭窝---开篇语---爆笑语录
- 为何要使用加密邮箱?
- win10企业版无法访问共享文件夹
- 杭电操作系统实验三--- 实现模拟shell(arm架构华为云)
- pdf签名无效解决办法_为什么下载下来的电子合同提示有效性未知或至少一个签名有问题?...
- Kimbal Musk 介绍:埃隆马斯克的弟弟
- Chapter 1 复杂度分析和递归分析
- lcg_magic算法笔记:反转单链表
- 阿里巴巴启动“NASA”计划 谋划20年后的发展格局
- Android网络篇
- 唐玄宗:谁想跟朕去打马球?在线等,挺急的