Стирается изображение в 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); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д