Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPanel上的paintComponent不工作_Java_Swing_Jpanel_Paintcomponent - Fatal编程技术网

Java JPanel上的paintComponent不工作

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

我已经花了将近两个小时在这上面,但我不能让它工作。 我只想在JPanel上绘制一个图像

我想在arena JPanel上绘制
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上绘制图像。