Java JPanel上的paintComponent不工作
我已经花了将近两个小时在这上面,但我不能让它工作。 我只想在JPanel上绘制一个图像 我想在arena JPanel上绘制Java JPanel上的paintComponent不工作,java,swing,jpanel,paintcomponent,Java,Swing,Jpanel,Paintcomponent,我已经花了将近两个小时在这上面,但我不能让它工作。 我只想在JPanel上绘制一个图像 我想在arena JPanel上绘制imageChaser图像。 但它没有显示出来。 我做错了什么 这是我的密码: public class GuiGameBoard extends JPanel { //import stuff private JPanel arena; BufferedImage imageChaser; BufferedImage imageChaserSelected; Bu
imageChaser
图像。
但它没有显示出来。
我做错了什么
这是我的密码:
public class GuiGameBoard extends JPanel {
//import stuff
private JPanel arena;
BufferedImage imageChaser;
BufferedImage imageChaserSelected;
BufferedImage imageTarget;
public GuiGameBoard() {
this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
arena = new JPanel();
arena.setPreferredSize(new Dimension(500, 500));
arena.setBackground(Color.BLACK);
this.add(arena);
try
{
File inputChaser = new File("resources\\chaser.png");
imageChaser = ImageIO.read(inputChaser);
File inputChaserSelected = new File("resources\\chaser_selected.png");
imageChaserSelected = ImageIO.read(inputChaserSelected);
File inputTarget = new File("resources\\target.png");
imageTarget = ImageIO.read(inputTarget);
}
catch (IOException ie)
{
System.out.println("Error:"+ie.getMessage());
}
}
public void paintComponent(Graphics g){
super.paintComponent(g);
g.drawImage(imageChaser, 0, 0, null);
}
}
我想你忘了一个顶级容器,例如JFrame 看看这个例子
有关更多信息,我想您忘记了“顶级容器”,例如JFrame 看看这个例子
要了解更多信息,我认为问题在于,通过将
jpanelarena
添加到已经是JPanel的GuiGameBoard类来隐藏图片
但是如果没有SSCCE,就不可能给出充分的答案…我认为问题在于,您通过将
JPanel arena
添加到您的GuiGameBoard类(已经是JPanel)来隐藏图片
但是,如果没有SSCCE,就不可能给出充分的答案……因此不适用于代码审查或调试。请描述您的具体问题,发布尽可能小的代码来显示问题,然后再次询问。1)要更快获得更好的帮助,请发布一个。很可能问题出在未显示的代码中。2)
新文件(“resources\\target.png”)代码>到部署时,这些资源很可能会成为一个资源。在这种情况下,必须通过URL
而不是File
访问资源。有关形成URL
的方法,请参阅标签的。3) g.drawImage(imageChaser,0,0,null)代码>应该是g.drawImage(imageChaser,0,0,this)代码>SO不用于代码检查或调试。请描述您的具体问题,发布尽可能小的代码来显示问题,然后再次询问。1)要更快获得更好的帮助,请发布一个。很可能问题出在未显示的代码中。2) 新文件(“resources\\target.png”)代码>到部署时,这些资源很可能会成为一个资源。在这种情况下,必须通过URL
而不是File
访问资源。有关形成URL
的方法,请参阅标签的。3) g.drawImage(imageChaser,0,0,null)代码>应该是g.drawImage(imageChaser,0,0,this)代码>我可以看到面板的背景,但图标没有显示。JFrame在另一个类中。我可以看到面板的背景,但图标没有显示。JFrame在另一个类中。+1,在图像顶部添加一个500 x 500的黑色面板。因此,除非图像大于该值,否则您将看不到任何图像。如何使图像覆盖500x500黑色面板?因为黑色面板是“竞技场”,图像是战舰。请使用黑色背景的普通面板。然后创建带有ImageIcon的JLabel,并将标签添加到面板中。我会这样做,但问题是“arena”下面是另一个带有一些按钮的JPanel,如pause。因此,我需要在每个下方使用2个JPanel,在“竞技场”JPanel上,我要绘制图像。+1,在图像顶部添加一个500 x 500的黑色面板。因此,除非图像大于该值,否则您将看不到任何图像。如何使图像覆盖500x500黑色面板?因为黑色面板是“竞技场”,图像是战舰。请使用黑色背景的普通面板。然后创建带有ImageIcon的JLabel,并将标签添加到面板中。我会这样做,但问题是“arena”下面是另一个带有一些按钮的JPanel,如pause。因此,我需要在每个下方使用2个JPanel,并在“竞技场”JPanel上绘制图像。