我已经在画布上添加了一个图像,然后在面板上显示该画布。但是当我最小化和最大化窗口时,图像会从面板中消失。我该如何解决这个问题呢?代码如下:
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);
}
}发布于 2011-09-27 20:31:53
这结合了Fredrik和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);
}
}
}发布于 2011-09-27 19:30:21
我建议您将图像加载从paint方法中移出。它看起来非常静态,对于画布的每次重新绘制,图像都会被重新加载,这会发生很多很多次,这将在事件分派线程上发生。
https://stackoverflow.com/questions/7568089
复制相似问题