我是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);
}
}
这与我的关卡课程几乎完全相同,但这不会出现在屏幕上。由于不值得一提的原因,我需要将它作为一个单独的类。
感谢。
答案 0 :(得分:-1)
此处的代码有效,JPanel上会出现一个黑色矩形。
我怀疑你正在添加其他JPanels。
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);
}
}