gpt4 book ai didi

java - ImageIcon.paintIcon 不在 JPanel 上绘制图像

转载 作者:行者123 更新时间:2023-11-29 07:37:58 24 4
gpt4 key购买 nike

我正在尝试在 JPanel 上绘制一个 .png。我使用 ImageIcon 构造函数导入它,并在我的自定义面板的 paintComponent 中绘制它。

我的 sscce :

package mypackage;

import java.awt.Graphics;

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

public class MyPanel extends JPanel {

static JFrame frame;
static MyPanel panel;
static ImageIcon icon;

public static void main(String[] args) {
icon = new ImageIcon(MyPanel.class.getResource("MyImage.png"));
frame = new JFrame();
panel = new MyPanel();
frame.setSize(500, 500);
frame.add(panel);
frame.setVisible(true);
frame.repaint();
}

@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
icon.paintIcon(panel, g, 100, 100);
}
}

我希望图像(只是白色背景上的几个形状)显示在面板上的 (100, 100) 处。相反,一个空白屏幕:

Blank panel where I expected my image to be drawn

没有错误发生意味着程序正在正确找到文件。

图像在我的 Eclipse 项目中,与类在同一个包中:

Project setup

为什么会这样?我该如何解决?

最佳答案

由于代码看起来是正确的,我建议资源没有被正确加载。

将 png 文件放在类路径中。例如。我会有一个目录:

~/ProjectRoot/resources/mypackage/

然后在类路径中包含资源。 In eclipse you can setup the classpath via

Project -> Properties -> Java Build Path -> Add Class Folder

BufferedImage img = 
ImageIO.read(MyPanel.class.getResourceAsStream("MyImage.png"));

如果找不到图像,则会抛出异常。您可以使用它来制作 ImageIcon。

关于java - ImageIcon.paintIcon 不在 JPanel 上绘制图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33370545/

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