Стирается изображение в 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);
}
}
}