Java 如何初始化多个组件?
我是java新手,需要制作一个游戏 在过去的两个小时里,我遇到并试图解决的问题是如何在两个不同的类中使用Jpanel和paintComponent绘制图像。我似乎无法让它工作 这是我第二节课的代码Java 如何初始化多个组件?,java,Java,我是java新手,需要制作一个游戏 在过去的两个小时里,我遇到并试图解决的问题是如何在两个不同的类中使用Jpanel和paintComponent绘制图像。我似乎无法让它工作 这是我第二节课的代码 public class Background extends JPanel { private BufferedImage image; public Background() { try { image = ImageIO.read(g
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);
}
}
这和我的等级课差不多,但屏幕上没有显示。由于不值得一提的原因,我需要将其作为一个单独的类
谢谢 您的代码在这里运行,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);
}
}
如果图像存在,此代码看起来很好。问题可能来自其他地方。请确保您正在将背景添加到JFrame中,并且它不在其他框架下。karl,我该怎么做?使用布局。frame.getContentPane().addComponent(mypanel,BorderLayout.WEST);然后在另一个面板上加上EAST。你在说什么??“你的解决方案有效”??这是一个答案吗?是的,这就是我要问的,我怎么能有两个,我知道它应该单独工作