Изображение утеряно при сворачивании окна - PullRequest
1 голос
/ 27 сентября 2011

Я добавил изображение на холст, а затем отобразил этот холст на панели.Но когда я сверну, а затем разверну окно, изображение исчезнет с панели.Как я могу решить это?Ниже приведен код:

public class CloseCanvas extends Canvas{

    private static final long serialVersionUID = 2L;

    @Override
    public void paint(Graphics g) {
        setSize(new Dimension(30,22));
        BufferedImage image = null;

        try {
            image = ImageIO.read(new File("res/close.png"));
        } catch (IOException ex) {
            ex.printStackTrace();
        }

        g.drawImage(image, 0, 0, null);

    }
}

Ответы [ 2 ]

2 голосов
/ 27 сентября 2011

Это включает в себя советы Фредрика и mKorbel, а также несколько других советов, не связанных с непосредственной проблемой.

public class CloseCanvas extends Canvas{

    private static final long serialVersionUID = 2L;
    BufferedImage image = null;

    CloseCanvas() {
        try {
            image = ImageIO.read(new File("res/close.png"));
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        setPreferredSize(new Dimension(30,22));
    }


    @Override
    public void paint(Graphics g) {
        if (image!=null) {
            g.drawImage(image, 0, 0, this);
        }
    }
}
2 голосов
/ 27 сентября 2011

Я бы посоветовал вам убрать загрузку изображения из метода рисования.Это выглядит довольно статично, и при каждом перекрашивании Canvas изображение будет перезагружаться, что происходит много-много раз, и это происходит в потоке отправки событий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...