gpt4 book ai didi

java - Java中的drawImage(),为什么图像没有加载?

转载 作者:行者123 更新时间:2023-11-30 03:51:31 25 4
gpt4 key购买 nike

我已将图像添加到 src 和 bin 目录中,并交叉检查图像文件的名称是否正确

这是主类

import javax.swing.*;

public class apples
{
public static void main(String args[])
{
JFrame frame = new JFrame();
MyDrawPanel wid = new MyDrawPanel();
frame.add(wid);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.setSize(300,300);
}
}

这是执行图像添加部分的类

import java.awt.*;
import javax.swing.*;

public class MyDrawPanel extends JPanel
{
public void paintComponent(Graphics g)
{

Image image = new ImageIcon("b.png").getImage();
g.drawImage(image,20, 20, this);
}
}

最佳答案

  1. frame.setVisible(true); 应该是 public static void main(String args[]) 内的最后一个代码行,因为您 setSize 到已经可见的 JFrame(仅躯干仅包含 Toolbar 和三个 Buttons)

  2. public static void main(String args[]) 中的每个 Swing 代码行都应包装到 invokeLater() 中,更多信息请参见 Oracle tutorial Initial Thread

  3. public class MyDrawPanel extends JPanel 返回零 Dimension (0, 0) 您必须为(内部)重写 getPreferredSize MyDrawPanel 扩展了 JPanel,使用 frame.setSize(300,300); 中的 new Dimension (300, 300),然后替换此代码行 (frame.setSize(300,300);) 和 frame.pack()

  4. 图像 image = new ImageIcon("b.png").getImage();

    a) 不要在 paintComponent 中加载任何 FileIO,将此Object 创建为局部变量

    b) paintComponent 内的第一个代码行应该是 super.paintComponent() 并且没有理由是公共(public)的,但 protected (public void PaintComponent(Graphics g ))

    c) g.drawImage(image,20, 20, this); 中设置的 Dimensionframe.setSize(300,300); 不对应,为什么会有空白

    d) 最重要的(如评论中所述)Image image = new ImageIcon("b.png").getImage(); 不是有效的 Java 路径

关于java - Java中的drawImage(),为什么图像没有加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24327231/

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