Стирается изображение в jPanel - Java

Узнай цену своей работы

Формулировка задачи:

Добрый вечер. Уже долгое время не получается оставить изображение на jPanel после его свертывания или перекрытия его другими окнами. Отрывки из кода: Класс, обрабатывающий события мыши
gfx = (Graphics2D) jPanel1.getGraphics();
       ImageTest it = new ImageTest(); 
       it.paintComponent(gfx);
       jPanel1.validate();
и класс, рисующий изображение
public class ImageTest extends JPanel {
 
     @Override
    public void paintComponent(Graphics g) {
        
         super.paintComponent(g);
         Image image = null;
      try {
          image = ImageIO.read(new File("picture.png"));
      } catch (IOException ex) {}
BufferedImage buffered = (BufferedImage) image;
    g.drawImage(buffered, 0, 0, this);
    
    }
    
}

Решение задачи: «Стирается изображение в jPanel»

textual
Листинг программы
class paintImage extends JPanel{
    public static Image image1;
    static int lastX;
static int lastY;
static int x;
static int y;
 
paintImage(String path) throws IOException {
setOpaque(true);
    image1 = ImageIO.read(new File(path));
    addMouseMotionListener(new MouseAdapter()
    {
        @Override
            public void mouseDragged(MouseEvent evt)
            {
                x = evt.getX();
                y = evt.getY();
                customPaint();
               
                lastX = x;
                lastY = y;
 
               
            }});
    
    
    addMouseListener(new MouseAdapter() { 
          public void mousePressed(MouseEvent me)
          { 
            lastX = me.getX();
            lastY = me.getY();
            
          }}); 
    
 }
   
 
  
public void customPaint(){
Graphics2D g2 = (Graphics2D) this.getGraphics(); 
   g2.drawLine(lastX, lastY, x, y);
g2.dispose();
validate();
}
 
public Dimension getPreferredSize() {
 
        return image1 == null ? super.getPreferredSize() : new Dimension(image1.getWidth(this), image1.getHeight(this));
    
    }
    
@Override
  public void paintComponent(Graphics g){ 
        super.paintComponent(g);
        System.out.println(x);
        if (image1 != null) {
            g.drawImage(image1,0,0,this);
        }   
}
 }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.769 из 5