Java 图像有时会消失

Java 图像有时会消失,java,Java,我遇到的问题是图像数组中的第一个图像有时无法绘制?你知道为什么吗?下面是我的Java代码:gui类有main方法。我还尝试在GUI类中读取图像,并将图像传递到imagesPanel的构造函数中。在这种情况下,什么都不会被画出来 import java.awt.Graphics; import java.awt.GridLayout; import java.awt.Image; import java.awt.event.MouseEvent; import java.awt.event.Mou

我遇到的问题是图像数组中的第一个图像有时无法绘制?你知道为什么吗?下面是我的Java代码:gui类有main方法。我还尝试在GUI类中读取图像,并将图像传递到imagesPanel的构造函数中。在这种情况下,什么都不会被画出来

import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;

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

public class ImagePanel extends JPanel implements MouseMotionListener {

    int posX=0;
    int posY=0;

    ArrayList<Image> images = new ArrayList<Image>();
    Image image;

    public ImagePanel() {
        this.addMouseMotionListener(this);

    }

    public void paintComponent(Graphics g) {
        try {
            images.add(ImageIO.read(new File("lion.jpeg")));
            images.add(ImageIO.read(new File("monkey.jpg")));
        } catch (IOException e) {

        }
        super.paintComponent(g);
        for(int i=0;i<images.size();i++){
            g.drawImage(images.get(i), posX, posY,100,100, this);
            posX=+120;
        }


    }

    @Override
    public void mouseDragged(MouseEvent arg0) {
        // TODO Auto-generated method stub
//      posX = arg0.getX();
//      posY = arg0.getY();
//      System.out.println(posX + " " + posY);
//      repaint();
    }

    @Override
    public void mouseMoved(MouseEvent arg0) {
        // TODO Auto-generated method stub

    }

}


    import javax.swing.JFrame;
    import javax.swing.SwingUtilities;

    public class GUI {

        public GUI() {
            createAndShowGUI();
        }

        private static void createAndShowGUI() {
            JFrame f = new JFrame("Image Viewer");
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            f.setSize(800, 800);
            f.setVisible(true);

            ImagePanel imagePanel = new ImagePanel();
            f.add(imagePanel);
        }

        public static void main(String[] args) {
            new GUI();
        }
    }
导入java.awt.Graphics;
导入java.awt.GridLayout;
导入java.awt.Image;
导入java.awt.event.MouseEvent;
导入java.awt.event.MouseListener;
导入java.awt.event.MouseMotionListener;
导入java.io.File;
导入java.io.IOException;
导入java.util.ArrayList;
导入javax.imageio.imageio;
导入javax.swing.JPanel;
公共类ImagePanel扩展JPanel实现MouseMotionListener{
int posX=0;
int-posY=0;
ArrayList images=新的ArrayList();
图像;
公众影像小组(){
this.addMouseMotionListener(this);
}
公共组件(图形g){
试一试{
image.add(ImageIO.read(新文件(“lion.jpeg”));
add(ImageIO.read(新文件(“monkey.jpg”));
}捕获(IOE异常){
}
超级组件(g);

对于(int i=0;iDon不加载任何着色方法中的资源,这些应该被加载和保存到其他地方。考虑提供一个演示您的问题的这一点。这会导致更少的混乱和更好的响应。它是不是从您的图片集合中提取出来的特定图像?MadProgrammer是正确的,您应该实际加载和存储T。调用printComponent时,您可以在其他地方创建图像,然后使用这些加载的图像printComponent@MadProgrammer是的,我也想到了。在GUI类中读取一次图像,然后将其传递到“图像”面板的构造函数中。但这也不起作用。@redandblue是任何抛出的错误?如果是,请张贴或告诉我们哪些不起作用