英文:
How to draw images after upgrade from java 7 to java 14
问题
因此,我编写了一个在JDK 7下运行的游戏,导入和绘制图形如下所示:
ImageReader.java:
public static BufferedImage button_quit;
public void fetchGraphics() {
try {
button_quit = ImageIO.read(new File("rsc/client/gui/button_quit.jpeg"));
} catch(Exception e) {
e.printStackTrace();
System.out.println("在导入覆盖图形时,ClientVariables.class中抛出异常。");
}
}
DrawClient.java:
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g.drawImage(ClientVariables.button_quit, ClientVariables.quitButtonX, ClientVariables.quitButtonY, null);
repaint();
}
问题是,在JDK 7中,它工作得很好,但自从我升级到JDK 14后,没有一个图形被导入,它只绘制了所有硬编码的线条和其他内容。我应该如何更改代码以使其再次工作,我毫无头绪(关于如何在Java中绘制图像的教程都是几年前的,因此也是在JDK 7或8中)。
编辑:这是相同的代码,同一个IDE,甚至没有其他存放东西的文件夹。图形的位置应该是正确的。我之前没有提到的是:图形没有被加载。我反复得到堆栈跟踪和我的错误消息。堆栈跟踪:
javax.imageio.IIOException: 无法读取输入文件!
at java.desktop/javax.imageio.ImageIO.read(ImageIO.java:1308)
at GUI.ClientVariables.<init>(ClientVariables.java:100)
at MAIN.CodeEntry.main(CodeEntry.java:70)
我怀疑可能的问题是,新版本的代码不认为“rsc/”文件夹位于与“src/”文件夹相同的位置,而可能位于其他地方。
英文:
So i wrote a game under jdk 7 which imported and drew graphics like that:<br>
ImageReader.java:
public static BufferedImage button_quit;
public void fetchGraphics() {
try {
button_quit = ImageIO.read(new File("rsc/client/gui/button_quit.jpeg"));
} catch(Exception e) {
e.printStackTrace();
System.out.println("Exception thrown in ClientVariables.class while importing overlay graphics.");
}
}
DrawClient.java:
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g.drawImage(ClientVariables.button_quit, ClientVariables.quitButtonX, ClientVariables.quitButtonY, null);
repaint();
}
The problem - in jdk 7 it worked just fine, but since i upgraded to jdk 14 not a single graphic is imported, it only draws all the lines and stuff that is hardcoded. How do i have to change the code to make it work again, i have no clue (tutorials on how to draw images in java are from years ago therefore also in jdk 7 or 8)
Edit: Its the same code, the same ide not even another folder where stuff is located in. The positions of the graphics are as they should be. What i didn't mention before: The graphics are not loaded. i repeatedly get the stack trace and my error message. Stack Trace:<br>
javax.imageio.IIOException: Can't read input file!<br>
at java.desktop/javax.imageio.ImageIO.read(ImageIO.java:1308)<br>
at GUI.ClientVariables.<init>(ClientVariables.java:100)<br>
at MAIN.CodeEntry.main(CodeEntry.java:70)<br><br>
What i suspect to maybe be the problem is that the code in the newer version doesn't expect the "rsc/" folder to be in the same folder as the "src/" folder but maybe somewhere else.
答案1
得分: 0
我自己解决了,可能是IDE出了点问题。基本上,在旧程序中,rsc/文件夹位于与包含此应用程序包的src/文件夹相同的文件夹中。现在程序在上一级文件夹中搜索rsc/文件夹。为什么?不清楚。但问题已解决。
英文:
Well i solved it myself, might be some fuckup by the IDE. Basically, in the old program, the rsc/ folder was located in the same folder as the src/ folder which contains the packages of this application. Now the program searched for the rsc/ folder one folder above. Why? No clue. But it's solved.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论