长春自助建站系统,室内装修效果大图,dede网站地图样式修改,企业所得税率前言#xff1a;
在写代码绘制图像的过程中#xff0c;发现出现cant read input file的异常#xff0c;而且输出框没有绘制图片#xff0c;所以寻找解决方案。先贴上之前写的简洁版绘制图像代码
1.BackGround类
import java.awt.image.BufferedImage;public class BackG…前言
在写代码绘制图像的过程中发现出现cant read input file的异常而且输出框没有绘制图片所以寻找解决方案。先贴上之前写的简洁版绘制图像代码
1.BackGround类
import java.awt.image.BufferedImage;public class BackGround {private BufferedImage bgImagenull;private int sort;private boolean flag;public BackGround(){}public BackGround(int sort,boolean flag) {this.sort sort;this.flag flag;bgImage StaticValue.bg;}public BufferedImage getBgImage() {return bgImage;}public int getSort() {return sort;}public boolean isFlag() {return flag;}}2.MyFrame类 import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.IOException;public class MyFrame extends JFrame implements KeyListener {private BackGround nowBg new BackGround();private Image offScreenImage null;public MyFrame() throws IOException {//设置窗口的大小为800 * 600this.setSize(800,600);//设置窗口居中显示this.setLocationRelativeTo(null);//设置窗口的可见性this.setVisible(true);//设置点击窗口上的关闭键,结束程序this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置窗口大小不可变this.setResizable(false);//向窗口对象添加键盘监听器this.addKeyListener(this);//设置窗口名称this.setTitle(超级玛丽);
/*String userDir System.getProperty(user.dir);System.out.println(当前工作目录: userDir);*/StaticValue.init();nowBgnew BackGround(1,true);repaint();}public void paint(Graphics g){if (offScreenImage null) {offScreenImage createImage(800,600);}Graphics graphics offScreenImage.getGraphics();graphics.fillRect(0,0,800,600);//绘制背景graphics.drawImage(nowBg.getBgImage(),0,0,this);//将图像绘制到窗口中g.drawImage(offScreenImage,0,0,this);}public static void main(String[] args) throws IOException {MyFrame myFrame new MyFrame();}Overridepublic void keyTyped(KeyEvent e) {}Overridepublic void keyPressed(KeyEvent e) {}Overridepublic void keyReleased(KeyEvent e) {}}3.StaticValue类
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;public class StaticValue {public static BufferedImage bgnull;public static String pathSystem.getProperty(user.dir)/src/bg.png;//public static String pathSystem.getProperty(user.dir)/src/;//public static String pathD:/BaiduNetdiskDownload/test/src/;//这里一定要用绝对路径 /test/src/bg.png;public static void init() {try {bg ImageIO.read(new File(pathbg.png));} catch (IOException e) {e.printStackTrace();}}}4.文件组织情况如下图其中图片png文件直接拖到src包那里就可以自动创建了。 如果先按照源代码错误的路径寻找会出现无法读取图片资源的错误 解决
经过查阅资料我了解到
1.System.getProperty(user.dir) 是 Java 中用于获取当前用户工作目录的一个方法。这个方法返回一个字符串表示当前 Java 程序运行时的工作目录路径。我的代码出现问题的逻辑是没有处理好文件的绝对路径代码这里System.getProperty(user.dir)/src/bg.png的形式注意只是形式但是实际上这个代码的路径不正确是采用工作路径加上绝对路径来读取。读取到的应该是路径而不应该是具体的文件名
但是改成这样就正确了
public static String path./src/;//相对路径对public static String pathSystem.getProperty(user.dir)/src/;//绝对路径对 疑惑
1.但是这些代码是错误的路径为什么 public static String path/bg.png/;public static String pathSystem.getProperty(user.dir)/src/bg.png;public static String pathD:/BaiduNetdiskDownload/test/src/bg.png;
附上检查文件工作目录的方法 String userDir System.getProperty(user.dir);System.out.println(当前工作目录: userDir);
2.输出是乱码形式怎么解决
已经改成utf8还是乱码
解决
1.关于字符编码乱码可能是因为jdk版本过高使用的是gbk编码只需手动把utf8改成gbk就可以了。更多修改方式如下面的连接转载
https://blog.csdn.net/JasonXu94/article/details/132871422
2.错误路径
其实IDEA中可以直接打开所在的文件路径 错因解析注意在ImageIO.read中已经使用了pathbg.png,所以文件路径不需要再写bg.png这个文件名了写了会造成重复才会失败 或者改成这样 心得
从一个偶然的错误忽略了ImageIO.read已经加上了文件名为了省略加载多张图片要重复写路径中相同的部分把path集成为文件名中相同的部分这样加载不同图片只需加上不同的文件名即可在解决问题的过程中我学习了文件的相对路径和绝对路径顺便了解了编码乱码怎么解决收获颇丰。