gpt4 book ai didi

java - 如何初始化多个paintComponent?

转载 作者:行者123 更新时间:2023-12-01 06:10:01 24 4
gpt4 key购买 nike

我是java新手,需要制作一个游戏。

过去两个小时我遇到并试图解决的问题是如何在两个不同的类中使用 Jpanel 和 PaintComponent 绘制图像。我似乎无法让它发挥作用。

这是我的第二堂课的代码

public class Background extends JPanel {

private BufferedImage image;

public Background() {

try {
image = ImageIO.read(getClass().getResourceAsStream("/test_bg.png"));
} catch (Exception e) {
System.out.println("Error loading background image");
}
repaint();

}

@Override
public void paintComponent(Graphics g) {

Graphics2D g2d = (Graphics2D) g;
super.paintComponent(g);
g2d.drawImage(image, 0, 0, null);
g2d.fillRect(100, 100, 100, 100);
}

}

这与我的关卡类(class)中的内容几乎相同,但不会出现在屏幕上。由于不值得一提的原因,我需要将其作为一个单独的类。

谢谢。

最佳答案

您的代码可以正常工作,JPanel 上会出现一个黑色矩形。

我怀疑您在此基础上添加了其他 JPanel。

import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;

import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Background extends JPanel {

public static void main(String[] args) {
JFrame f = new JFrame();
f.getContentPane().add(new Background());
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(800, 600);
f.setVisible(true);
}

private BufferedImage image;

public Background() {

try {
image = ImageIO.read(getClass().getResourceAsStream("/test_bg.png"));
} catch (Exception e) {
System.out.println("Error loading background image");
}
repaint();

}

@Override
public void paintComponent(Graphics g) {

Graphics2D g2d = (Graphics2D) g;
super.paintComponent(g);
g2d.drawImage(image, 0, 0, null);
g2d.fillRect(100, 100, 100, 100);
}

}

关于java - 如何初始化多个paintComponent?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36669156/

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