gpt4 book ai didi

java - 使用drawImage在JPanel中绘制图像

转载 作者:行者123 更新时间:2023-11-30 06:39:05 25 4
gpt4 key购买 nike

我可以请你帮忙吗?我在 JPanel 内绘制图像时遇到一些问题。我曾经创建一个扩展 JPanel 的类并执行此操作

public class Example extends JPanel {

BufferedImage background;

public Example () {

background = loadImage();
}

private BufferedImage loadImage(){
URL imagePath = getClass().getResource("Immagini/Board.png");
BufferedImage result = null;
try {
result = ImageIO.read(imagePath);
} catch (IOException e) {
System.err.println("Errore, immagine non trovata");
}

return result;
}

@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Dimension size = getSize();
g.drawImage(background, 0, 0,size.width, size.height,0, 0, background.getWidth(), background.getHeight(), null);

}
}

它很完美,现在我不能这样做,因为我的 newExample 类扩展了 genericExample,所以也不能扩展 JPanel。我在 newExample 中有 JPanel panel = new JPanel() ,我想像上面的代码中那样进行绘制,如何调整它以在这种不同的情况下使用?

最佳答案

您仍然可以重用您的Example类。您将使用覆盖的面板类,而不是 JPanel panel = new JPanel();:

JPanel panel = new Example();

另一种方法是使用 JPanel 的匿名实现:

JPanel panel = new JPanel(){
BufferedImage background = loadImage();

private BufferedImage loadImage(){
URL imagePath = getClass().getResource("Immagini/Board.png");
BufferedImage result = null;
try {
result = ImageIO.read(imagePath);
} catch (IOException e) {
System.err.println("Errore, immagine non trovata");
}
return result;
}

@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Dimension size = getSize();
g.drawImage(background, 0, 0,size.width, size.height,0, 0, background.getWidth(), background.getHeight(), null);
}
};

请注意,您不能在匿名类中使用构造函数,这不利于可重用性。

希望这对您有所帮助

关于java - 使用drawImage在JPanel中绘制图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44703405/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com