使用 drawImage 在 JPanel 中绘制图像
Paint Image in JPanel using drawImage
我可以请你帮忙吗?我在 JPanel 中绘制图像时遇到了一些问题。我曾经创建一个 class 来扩展 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 class 扩展了 genericExample,所以也不能扩展 JPanel。我在 newExample 中有 JPanel panel = new JPanel()
,我想像上面的代码一样在其中绘画,我如何调整它以在这种不同的情况下使用?
您仍然可以重复使用您的 Example
class。而不是 JPanel panel = new JPanel();
你会使用你覆盖的面板 class:
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);
}
};
请注意,您不能在匿名中使用构造函数 class,这不利于可重用性。
希望对您有所帮助
我可以请你帮忙吗?我在 JPanel 中绘制图像时遇到了一些问题。我曾经创建一个 class 来扩展 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 class 扩展了 genericExample,所以也不能扩展 JPanel。我在 newExample 中有 JPanel panel = new JPanel()
,我想像上面的代码一样在其中绘画,我如何调整它以在这种不同的情况下使用?
您仍然可以重复使用您的 Example
class。而不是 JPanel panel = new JPanel();
你会使用你覆盖的面板 class:
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);
}
};
请注意,您不能在匿名中使用构造函数 class,这不利于可重用性。
希望对您有所帮助