gpt4 book ai didi

java - 我无法使用 Swing 弹出图像

转载 作者:行者123 更新时间:2023-12-01 13:42:40 26 4
gpt4 key购买 nike

我已经用谷歌搜索了这个并搜索了这个网站,尝试使用 Swing 来显示图像,但是每次我实现在网上找到的代码时它都不起作用。我不知道我做错了什么,有人可以帮助我吗?

package Game;

import java.awt.Dimension;
import java.awt.Graphics;
import java.io.IOException;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class Amazing {

private int width = 300;
private int height = width / 16 * 9;
private int scale = 3;
private static Graphics g;

private static JFrame frame = new JFrame();
private static JPanel panel = new JPanel();

public Amazing(){
Dimension size = new Dimension(width*scale, height*scale);
frame.setPreferredSize(size);
frame.setResizable(false);
frame.setTitle("Amazing!");
frame.add(panel);
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}

public static void main(String[] args){
Amazing amazing = new Amazing();
Character character = new Character();
character.paintComponent(g);
}


}
<小时/>
package Game;

import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.JPanel;

public class Character extends JPanel{

private BufferedImage image;

public Character(){

try {
image = ImageIO.read(new File("E:\\Libraries\\Documents\\Java Stuff\\workspace\\Java_Final\\narwhal.png"));
} catch (IOException ex) {
// handle exception...
}
}

protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(image, 50, 50, null); // see javadoc for more info on the parameters
}

}

最佳答案

Amazing amazing = new Amazing();

这行代码所做的就是创建一个框架,然后向其中添加一个空面板。由于面板是空的,所以没有什么可绘制的。

Character character = new Character();
character.paintComponent(g);

您永远不应该直接调用paintComponent()方法。当组件需要重新绘制时,Swing 将调用该方法。不管怎样,创建一个Character对象什么也不做。那个物体只是存在于内存中。它没有添加到 GUI,因此永远无法绘制。

我建议您忘记自定义绘画,只使用 JLabel 来显示图像。阅读 Swing 教程中关于 How to Use Labels 的部分一个工作示例。不仅如此,本教程还将向您展示如何更好地构建代码。您不应该使用静态变量。从工作示例开始,然后对其进行自定义以使用您的图像。

关于java - 我无法使用 Swing 弹出图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20587894/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com