在做JAVA项目时我们有时候要用到界面的动态背景,但是对于初学者来说通常会使用普通的IO流来设置背景图片,但这往往会出问题的,要么找不到路径,要么动态背景图片设置不成功(动态图片变成静态图片),下面我来讲讲我遇到的问题以及解决方案吧。

第一个问题,报错Can't read input file!

如下:

遇到这个问题:

1.确定图片文件存在
2.确定图片文件未被占用
3.图片文件路径改成英文(不要有中文和空格)

如果再仔细检查后发现没有问题可以试试改编码类型,看看是不是编码的问题(因为我当时的编码是GBK,我改成UTF-8以后就可以运行了,但是会变成静态图片,还是会出现错误,这个问提下面会提到)。如果编码没有问题或者编码改了以后仍然报错,可以试试下面的方法

public class Main {public static void main(String[] args) throws IOException {BufferedImage bufferedImage = ImageIO.read(new File("C:\\Users\\Shane\\Desktop\\新建 文件夹\\1.png"));System.out.println(bufferedImage);}
}

这样测试以后,不管路径怎样都可以正常输出

BufferedImage@4769b07b: type = 5 ColorModel: #pixelBits = 24 numComponents = 3 color space = java.awt.color.ICC_ColorSpace@cc34f4d transparency = 1 has alpha = false isAlphaPre = false ByteInterleavedRaster: width = 538 height = 330 #numDataElements 3 dataOff[0] = 2

只有一种情况会报这个错误

就是在路径中包含中文的时候,Java源文件进行编码转换以后,再次执行,就报这个错误;
此时把编译生成的class文件删除,重新编译,就又可以了

上述是编码的问题,现在说一下报错的内部类问题,下面是代码的

关键就是下图的代码返回了false

再往下就是native方法了

所以这种情况就应该是IO流异常

第一个问题解决了,现在看一下第二个问题,将背景设置为动态,但是没有成功,设置出来的背景图还是静态的,代码示例如下:

运行结果如下:

注意,运行以后是是静态的,下面我把动态原图放出来

这种问题就是图片分辨率大小不一致,导致动图被拉伸,无法展示出相应的效果,这种问题只需要在设置面板宽和高时用下面两个方法获取动图的长和宽来设置面板就可以达到效果了

int width = icon.getIconWidth();

int height = icon.getIconHeight();

下面展示完整代码及运行结果

import javax.swing.*;
import java.awt.*;public class Main {public static void main(String[] args) {// 背景图片ImageIcon icon = new ImageIcon("C:\\Users\\Shane\\Desktop\\bg.gif");// 宽int width = icon.getIconWidth();// 高int height = icon.getIconHeight();// JFrameJFrame jf = new JFrame("测试GIF背景图片");// 设置窗口尺寸jf.setSize(width, height);// 设置窗口居中jf.setLocationRelativeTo(null);// 设置点击关闭按钮时退出jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 1.分层面板JLayeredPane layeredPane = new JLayeredPane();// 2.背景图片面板JPanel bgPanel = new JPanel();// 设置面板流式布局bgPanel.setLayout(new FlowLayout());// 把图片添加到标签中JLabel label = new JLabel(icon);// 设置尺寸bgPanel.setBounds(0, 0, width, height);// 添加标签bgPanel.add(label);// 3.按钮面板JPanel panel = new JPanel();// 设置面板流式布局panel.setLayout(new FlowLayout());panel.setBackground(Color.RED);// 面板设置为透明panel.setOpaque(false);// 测试按钮JButton button = new JButton("测试按钮");// 设置尺寸panel.setBounds(0, 0, width, height);// 面板添加测试按钮panel.add(button);// 背景图片面板添加到分层面板的低层layeredPane.add(bgPanel, JLayeredPane.DEFAULT_LAYER);// 背景图片面板添加到分层面板的高层layeredPane.add(panel, JLayeredPane.MODAL_LAYER);// 添加分层面板jf.setContentPane(layeredPane);// 设置显示窗口jf.setVisible(true);}
}

都看到这里了,如果这篇文章对你有帮助的话,请点个小小的赞再走吧!

JAVA GUI界面动态背景图设计相关推荐

  1. Py之wxPython:利用wxPython设计GUI界面(图片背景+简单按钮)

    Py之wxPython:利用wxPython设计GUI界面(图片背景+简单按钮) 目录 实现界面 实现代码 实现界面 实现代码 import wxclass MyPanel(wx.Panel):def ...

  2. linux java 弹出界面,java gui界面在linux

    java gui界面在linux [2021-02-05 02:24:38]  简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace(&quo ...

  3. 仿QQ个人信息详情界面中背景图的下拉扩展放大功能

    一般一些项目中都少不了一些头部背景图,但是如果背景图静态的现实并不能呈现出与用户操作的交互感,所以要想办法让背景图动起来,qq的一些交互感我很喜欢,比如他的个人详情界面的背景图就是可以下拉扩展,并在扩 ...

  4. 原创安卓手机QQ7.0登录界面动态背景视频实现方案

    qq7.0登录界面动态背景实现 qq7.0登录界面动态视频背景实现 android动态视频背景 android动态背景 分析qq7.0: 视频在打开登录界面就开始播放 了,而且期间无黑屏 而且是循环播 ...

  5. vue 项目中使 实现粒子动态 背景图

    在vue中,实现粒子动态背景图的效果 首先安装 插件 npm install vue-particles --save-dev 在main.js 文件中进行引用注册 // 动态粒子 import Vu ...

  6. JAVA GUI界面组件学习

    这周主要练习了GUI界面组件,设计了一个登陆界面,整体运用BorderLayout界面,将界面分为上.中.下,又将中间部分分为三层,运用了组合框来记录登陆ID,添加了复选框完善程序,基本实现了登陆界面 ...

  7. 利用 Window Builder 快速搭建Java GUI 界面

    读完本篇文章,你可以迅速上手JavaGUI编程,可以尝试自己写出美美的界面啦~ (虽然不是很美观hhh但是比起黑框框好多了) 目录 1. 为 eclipse 安装 window builder 插件 ...

  8. QQ2013登陆界面动态背景资源

    ---------------------------------------------------------------------------------------------------- ...

  9. 项目看板开发经验分享(一)——光伏绿色能源看板(可复用组件、条件动态背景图、flex布局应用、v-for遍历列表多重绝对定位)

    今天新开一个系列,专门介绍近期工作中开发的几个比较酷炫的看板的开发思路与经验分享.第一节我们就来介绍下这个光伏绿色能源看板,整体浏览如下: UED提供的原设计图,这波还原的还不错吧? 那就直接进入正题 ...

最新文章

  1. PHP中对象的深拷贝与浅拷贝
  2. lay和lied_lie和lay的区别
  3. 当遭遇“用户增长”停滞,你应该怎么办?
  4. java通过spring获取配置文件_springboot获取properties文件的配置内容(转载)
  5. chromium net android移植
  6. 论文阅读:Non-local Neural Networks
  7. 【路径规划】基于matlab改进的遗传算法栅格地图路径规划【含Matlab源码 525期】
  8. 多线程之生产者与消费者问题
  9. 商务英语还是计算机专业好,是读广东外语外贸大学计算机专业好还是广东工业大学计算机专业好...
  10. CE教程第八关——搜索4级指针
  11. 计算机电源管理器怎么打开,联想电源管理软件打不开怎么办
  12. modelsim仿真vivado ip核方法
  13. 联想商务机M8000T风扇狂转解决方法
  14. DMP 数据管理平台极简教程 ( Data Management Platform )
  15. python word.documents.open报错_Python教程:[43]Word基本操作
  16. 当复制Web浏览器的SVN地址到TorioseSVN上时显示错误,无法解析URL
  17. 怎么配置计算机终端网络ip地址,如何配置计算机的IP地址并测试联网
  18. 【软件篇】~ 为什么打开谷歌浏览器就是360导航页面呢?
  19. 拼多多商家一件代发,一键打单有什么软件?
  20. JVM总结(三)Minor GC、Major GC和Full GC

热门文章

  1. 应用web2.0服务
  2. 资源变现资讯、新闻、自媒体、博客小程序(可引流,开通流量主,带pc后台管理)
  3. 13、计算机网络的七层模型、四层模型 以及 五层模型
  4. pict 使用初解(右键管理员模式打开不cmd)
  5. Android Studio 导入项目时出现Failed to apply plugin
  6. springboot使用Mybatis-plus3.5.0 数据库取日期数据映射java 类LocalDateTime字段 为null
  7. 前端表格数据导出为 Excel 的简单方法
  8. 人脸造型与表演动画技术
  9. 基于Linux下的文件归档
  10. 如何设置Minecraft,以便您的孩子可以和朋友一起在线玩