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

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

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

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

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

textual
Листинг программы
  1. class paintImage extends JPanel{
  2.     public static Image image1;
  3.     static int lastX;
  4. static int lastY;
  5. static int x;
  6. static int y;
  7.  
  8. paintImage(String path) throws IOException {
  9. setOpaque(true);
  10.     image1 = ImageIO.read(new File(path));
  11.     addMouseMotionListener(new MouseAdapter()
  12.     {
  13.         @Override
  14.             public void mouseDragged(MouseEvent evt)
  15.             {
  16.                 x = evt.getX();
  17.                 y = evt.getY();
  18.                 customPaint();
  19.                
  20.                 lastX = x;
  21.                 lastY = y;
  22.  
  23.                
  24.             }});
  25.    
  26.    
  27.     addMouseListener(new MouseAdapter() {
  28.           public void mousePressed(MouseEvent me)
  29.           {
  30.             lastX = me.getX();
  31.             lastY = me.getY();
  32.            
  33.           }});
  34.    
  35.  }
  36.    
  37.  
  38.  
  39. public void customPaint(){
  40. Graphics2D g2 = (Graphics2D) this.getGraphics();
  41.    g2.drawLine(lastX, lastY, x, y);
  42. g2.dispose();
  43. validate();
  44. }
  45.  
  46. public Dimension getPreferredSize() {
  47.  
  48.         return image1 == null ? super.getPreferredSize() : new Dimension(image1.getWidth(this), image1.getHeight(this));
  49.    
  50.     }
  51.    
  52. @Override
  53.   public void paintComponent(Graphics g){
  54.         super.paintComponent(g);
  55.         System.out.println(x);
  56.         if (image1 != null) {
  57.             g.drawImage(image1,0,0,this);
  58.         }  
  59. }
  60.  }

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут