实现动画的连续展示 JAVA

news2024/9/24 11:33:28

目录

  • 1、前言:
  • 2、图片的展示以及自动关闭:
  • 3、动画的连续展示:

1、前言:

要实现动画的流畅展示需要在能展示图片的基础上对图片进行关闭,再切换下一张图片,这要关闭窗口,与延时函数以及while函数的配合使用


2、图片的展示以及自动关闭:

图片的展示以及关闭代码如下:

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
         water w = new water("C:\\Users\\86153\\Pictures\\Saved Pictures\\微信图片_20220211134809.jpg");
         try {
			Robot r = new Robot();
			r.delay(3000);
		} catch (AWTException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
         w.dispatchEvent(new WindowEvent(w, WindowEvent.WINDOW_CLOSING));//关闭窗口
	}

}

class water extends JFrame{//打印图片类
	water(String PATH){
		 //图片大小设置
   	 this.setSize(1000, 1000);
   	 
   	 
   	 //手动关闭窗口程序自动结束
   	 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   	 
   	 
   	 //加载图片
   	 ImageIcon imageIcon = new ImageIcon(PATH);
   	 
   	 
   	 //创建的JLabel设置其图标为上方加载的图片
   	 JLabel label = new JLabel(imageIcon);
   	 
   	 //将label添加到窗口中
   	 this.getContentPane().add(label);
   	 
   	 
   	 //图片居中
   	 this.setLocationRelativeTo(null);
   	 
   	 
   	 //窗口显示
   	 this.setVisible(true);
   	
   	 
	}
}

Java中使用frame.dispose()时,该行代码被标记了横线,可能是因为该方法被标记为过时方法(deprecated method)所以取而代之使用 w.dispatchEvent(new WindowEvent(w, WindowEvent.WINDOW_CLOSING));方法

3、动画的连续展示:

在这里插入图片描述
以上述图为例,理论上从0出发可以到达任意的其他三个点且有多种路径,若上述0,1,2,3分别代表一张图的话,配合随机数的生成理论上可以产生不同变换且流畅的动画

将上述图转成矩阵有路径的坐标分别为(0,1)、(1,3)、(1,2)、(2,3)、(2,0)、(3,0)
变换成01矩阵入下:
[
0,1,0,0
0,0,1,1
1,0,0,1
1,0,0,0
]
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.WindowEvent;
import java.util.Random;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class Main {
	
	public static String path[] = {
			"C:\\Users\\86153\\Pictures\\Saved Pictures\\0.jpg",
			"C:\\Users\\86153\\Pictures\\Saved Pictures\\1.jpg",
			"C:\\Users\\86153\\Pictures\\Saved Pictures\\2.jpg",
			"C:\\Users\\86153\\Pictures\\Saved Pictures\\3.jpg"
			};

	public static void main(String[] args) {
		 int index = 0;//初始化变量
		    while(true) {//死循环
			 
			 int next = Math.abs(new Random().nextInt()) % 4;
			 while(a[index][next] != 1) next = Math.abs(new Random().nextInt()) % 4;
			 
			// System.out.println(index + " " + next);
			 
			 Water w = new Water(path[next]);
			 
			 index = next;
			 
			 try {
				new Robot().delay(500);
				//w.dispatchEvent(new WindowEvent(w, WindowEvent.WINDOW_CLOSING));//关闭窗口
			} catch (Exception e) { 
		    
			}
		} 
	}
	
	public static int a[][] = {
			{0, 1, 0, 0},
			{0, 0, 1, 1},
			{1, 0, 0, 1},
			{1, 0, 0, 0}
	};
}

class Water extends JFrame{//打印图片类
	Water(String PATH){
		 //图片大小设置
   	 this.setSize(2000, 2000);
   	 
   	 
   	 //手动关闭窗口程序自动结束
   	 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   	 
   	 
   	 //加载图片
   	 ImageIcon imageIcon = new ImageIcon(PATH);
   	 
   	 
   	 //创建的JLabel设置其图标为上方加载的图片
   	 JLabel label = new JLabel(imageIcon);
   	 
   	 //将label添加到窗口中
   	 this.getContentPane().add(label);
   	 
   	 
   	 //图片居中
   	 this.setLocationRelativeTo(null);
   	 
   	 
   	 //窗口显示
   	 this.setVisible(true);
   	
   	 
	}
}

能够切换但不够丝滑

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/890451.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FreeModbus——移植(三)

参考自:手把手教你移植FreeModbus到STM32【看评论区引导,领取全套资料包】_freemodbus移植_HQYJ520的博客-CSDN博客 1.准备源码 1.这里用到串口进行传输,所以我没拷贝一个正常的串口工程(我用的是正点原子f4库函数版本&#xff…

C++之map的emplace与pair插入键值对用例(一百七十四)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

【Python】解决 pip 开了网络代理之后无法安装包的问题

问题描述 开了网络代理之后,python 的 pip 就无法安装包了,报如下错误: $ pip install netsm Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple WARNING: Retrying (Retry(total4, connectNone, readNone, redirectNone, sta…

爬虫逆向实战(二)--某某观察城市排行榜

一、数据接口分析 主页地址:某某观察 1、抓包 通过抓包可以发现数据接口是multi 2、判断是否有加密参数 请求参数是否加密? 无请求头是否加密? 无cookie是否加密? 无响应数据是否加密? 通过查看“响应”板块可以…

Web菜鸟教程 - Springboot接入认证授权模块

网络安全的重要性不言而喻,如今早已不是以前随便弄个http请求就能爬到数据的时代,而作为一个架构师,网络安全必须在产品开发之初就考虑好。因为在产品开发的后期,一方面是客户增多,压力变大,可供利用的时间…

指针作为函数参数间接赋值成立的三个条件,例程,内存调用模型

#include <stdio.h> #include <stdlib.h> int config_read(char * filep, char *** p, int * len) { printf(“config file name is :%s\n”, filep); char ** tempP (char**)malloc(sizeof(char *)*10); for(int i 0; i<10; i) {tempP[i] (char *)malloc(2…

LC-相同的树

LC-相同的树 链接&#xff1a;https://leetcode.cn/problems/same-tree/solutions/363636/xiang-tong-de-shu-by-leetcode-solution/ 描述&#xff1a;给你两棵二叉树的根节点 p 和 q &#xff0c;编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同&#xff0c;并…

驱动DAY4 字符设备驱动分步注册和ioctl函数点亮LED灯

头文件 #ifndef __HEAD_H__ #define __HEAD_H__ typedef struct{unsigned int MODER;unsigned int OTYPER;unsigned int OSPEEDR;unsigned int PUPDR;unsigned int IDR;unsigned int ODR; }gpio_t; #define PHY_LED1_ADDR 0X50006000 #define PHY_LED2_ADDR 0X50007000 #d…

Next.js - Pages and Layouts

Pages 页面是路由独有的用户界面。你可以通过从 page.js 文件导出组件来定义页面。使用嵌套文件夹定义路由&#xff0c;并使用 page.js 文件公开访问路由。 // app/page.tsx is the UI for the / URL export default function Page() {return <h1>Hello, Home page!<…

python爬虫7:实战1

python爬虫7&#xff1a;实战1 前言 ​ python实现网络爬虫非常简单&#xff0c;只需要掌握一定的基础知识和一定的库使用技巧即可。本系列目标旨在梳理相关知识点&#xff0c;方便以后复习。 申明 ​ 本系列所涉及的代码仅用于个人研究与讨论&#xff0c;并不会对网站产生不好…

QT学习笔记-Linux ARM环境下实现QT程序通过ODBC驱动访问SQLServer数据库

QT学习笔记-Linux ARM环境下实现QT程序通过ODBC驱动访问SQLServer数据库 0、背景1、基本环境2、搭建交叉编译环境3、在交叉编译服务器上交叉编译安装unixODBC3.1 下载unixODBC3.2 交叉编译unixODBC3.2.1 基本编译说明3.2.2 交叉编译说明3.2.3 ./configure -build,-host,-target…

iTOP-RK3399开发板开发板作为客户端- ssh使用

默认使用本地用户为远程登录时的用户&#xff1b;远程连接虚拟机里面的 Ubuntu&#xff08;IP 地址为 192.168.1.20&#xff09;&#xff0c; 如下图所示&#xff1a; ssh 192.168.1.20 以指定用户身份连接至服务器,输入以下命令&#xff1a; 输入 exit 退出 ssh 登录。 更多…

基础设施SIG月度动态:龙蜥大讲堂 - 基础设施系列专题分享火热进行中(7~8 月上旬持续分享),敬请关注!

基础设施 SIG&#xff08;OpenAnolis Infra SIG&#xff09;目标&#xff1a;负责 OpenAnolis 社区基础设施工程平台的建设&#xff0c;包括官网、Bugzilla、Maillist、ABS、ANAS、CI 门禁以及社区 DevOps 相关的研发工程系统。 01 SIG 整体进展 1、龙蜥大讲堂 - 基础设施系…

Vue3和Vue2对比学习之全局 API 应用实例

文章目录 0.前言1.参考文档2.详细说明2.1 全局 API 应用实例 非兼容2.2 一个新的全局 API&#xff1a;createAppconfig.productionTip 移除config.ignoredElements 替换为 config.isCustomElementVue.prototype 替换为 config.globalPropertiesVue.extend 移除类型推断组件继承…

最新年轻人副业赚钱攻略

最近几年&#xff0c;随着互联网的快速发展和社会变革的加速&#xff0c;年轻人副业赚钱的需求也越来越大。无论是为了增加收入、提升个人能力还是实现自我价值&#xff0c;年轻人们都纷纷开始寻找副业赚钱的机会。 那么&#xff0c;如何才能在副业赚钱中脱颖而出呢&#xff1…

软考笔记——10.项目管理

进度管理 进度管理就是采用科学的方法&#xff0c;确定进度目标&#xff0c;编制进度计划和资源供应计划&#xff0c;进行进度控制&#xff0c;在与质量、成本目标协调的基础上&#xff0c;实现工期目标。 具体来说&#xff0c;包括以下过程&#xff1a; (1) 活动定义&#…

Appium-移动端自动测试框架,如何入门?

Appium是一个开源跨平台移动应用自动化测试框架。 既然只是想学习下Appium如何入门&#xff0c;那么我们就直奔主题。文章结构如下&#xff1a; 1、为什么要使用Appium&#xff1f; 2、如何搭建Appium工具环境?(超详细&#xff09; 3、通过demo演示Appium的使用 4、Appium如何…

PD协议受电端芯片是什么?——浅谈快充协议在Hi003/XSP16应用

PD协议的全称是USB Power Delivery协议&#xff0c;该协议是基于USB 3.1中的Type-C接口&#xff0c;所以一般使用Type-C接口的充电器都有PD协议。 目前充电器常见的USB-PD功率为&#xff1a;5V3A&#xff08;15W&#xff09;、9V2A&#xff08;18W&#xff09;、12V3A&#xf…

扩散模型实战(四):从零构建扩散模型

推荐阅读列表&#xff1a; 扩散模型实战&#xff08;一&#xff09;&#xff1a;基本原理介绍 扩散模型实战&#xff08;二&#xff09;&#xff1a;扩散模型的发展 扩散模型实战&#xff08;三&#xff09;&#xff1a;扩散模型的应用 本文以MNIST数据集为例&#xff0c;从…

【Linux】POSIX信号量和基于环形队列的生产消费者模型

目录 写在前面的话 什么是POSIX信号量 POSIX信号量的使用 基于环形队列的生产消费者模型 写在前面的话 本文章主要先介绍POSIX信号量&#xff0c;以及一些接口的使用&#xff0c;然后再编码设计一个基于环形队列的生产消费者模型来使用这些接口。 讲解POSIX信号量时&#x…