Java 图像不在简单小程序中显示

Java 图像不在简单小程序中显示,java,image,applet,Java,Image,Applet,我第一次使用java图像,在加载小程序时查看它们时遇到问题。我在下面发布的代码是我实际使用的代码的一个大幅缩减版本,希望在我必须调整窗口大小以查看图像时,找出我无法使用此代码查看图像的原因。非常感谢所有帮助,并提前表示感谢:) TestImageDraw.java import java.awt.*; import java.util.Random; import javax.swing.*; public class TestImageDraw extends JPane

我第一次使用java图像,在加载小程序时查看它们时遇到问题。我在下面发布的代码是我实际使用的代码的一个大幅缩减版本,希望在我必须调整窗口大小以查看图像时,找出我无法使用此代码查看图像的原因。非常感谢所有帮助,并提前表示感谢:)

TestImageDraw.java

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

public class TestImageDraw extends JPanel
{

Image itemImg; // stores the item image

public TestImageDraw(Image itemImg)
{

    this.itemImg = itemImg;

}


/** Description of draw(Graphics g)
*
* Function draws the lines used in the table
* @param g  object used to draw the table
* @return   none
*/
public void draw(Graphics g)
{
  Graphics2D g2=(Graphics2D)g;
  //draw flyswatter
  drawValues(g2);   //draw values

    }

    private void drawValues(Graphics g)
{

    g.drawImage(itemImg,20,140,30,40, null);

      g.setColor(Color.black);  // set color of table to black

}


}

这不是一个简单的例子,代码中还有很多垃圾。例如,所有图像过滤与显示图像有什么关系?所有线程代码与显示图像有什么关系

昨天我花了一个小时和你一起教你绘画的基础知识,你一句话也没听我说

我教过您所有关于重写paintComponent()的内容。我向您介绍了Swing tuturial,它有一个使用图像的工作示例。小程序的结构与教程中的示例完全不同。您的示例将非常简单,因为您不必担心动画

你昨天不仅浪费了我的时间,而且知道你在试图浪费别人的时间


从教程中学习并发布正确的SSCE。

答案是在类中更改draw()方法,将JPanel扩展到paintComponent(),并将调用drawImage()中的最后一个参数切换为“this”,而不是“null”。工作立即和完美

很明显,你没有教我所有关于重写paintComponent()的知识,因为我还在问问题。我不明白什么可以从代码中删除,所以我留下了一些我认为很重要的函数。在我拿出你在上次谈话中推荐的所有东西后,程序没有画任何东西,所以我不知道发生了什么。我已经阅读了swing教程,当我尝试编译示例代码时,我得到了“使用或重写不推荐的API”错误,因此没有太多帮助。我很感激你试图帮助我,但是没有人强迫你“浪费”时间在我身上。我的印象是,像这样的代码正是你说的“创建一个简单的自定义JPanel,它有一个简单的抽绳(…),然后将它添加到你的JApplet中,并首先让它工作”时所推荐的代码(除了我需要画一个图像,而不是一个字符串,我无法让它工作,这就是为什么我要问问题)…你在你的帖子中了解了paintComponent:。我还让你第二次参考了关于自定义绘制的Swing教程。同样,这里的代码与“如何制作小程序”教程中的示例代码完全不同。您声称此代码的问题在于它不会显示图像,甚至无法使用抽绳(),因此您也忽略了该建议。我知道我不需要帮助。我的评论旨在警告其他人,您没有听我的建议,也没有阅读您指向的教程。因此,这意味着您希望我们向您提供答案,即使该教程包含一个有效的答案示例(您需要理解和修改)。是的,我确实建议创建一个简单的示例。正如我在第一篇帖子中所述,这不是一个简单的示例。我坚持认为,您首先需要让一个小程序工作,它只做一个抽绳()。那应该是大约10-20行代码。你还没有这样做,那么你怎么可能继续下一步,更复杂的显示图像的步骤?那么为什么我的答案不被接受呢?我有多少次建议你需要一个paintComponent()方法,或者使用“this”而不是“null”。
import java.awt.*;  
  import java.util.Random;  
  import javax.swing.*;  

public class TestImageDraw extends JPanel
{

Image itemImg; // stores the item image

public TestImageDraw(Image itemImg)
{

    this.itemImg = itemImg;

}


/** Description of draw(Graphics g)
*
* Function draws the lines used in the table
* @param g  object used to draw the table
* @return   none
*/
public void draw(Graphics g)
{
  Graphics2D g2=(Graphics2D)g;
  //draw flyswatter
  drawValues(g2);   //draw values

    }

    private void drawValues(Graphics g)
{

    g.drawImage(itemImg,20,140,30,40, null);

      g.setColor(Color.black);  // set color of table to black

}


}