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