在JPanel上绘图并没有做任何事情

时间:2014-06-14 13:25:36

标签: java swing jpanel paintcomponent graphics2d

我现在正在努力奋斗几个小时。我现在制作了一个星期的2D游戏并遇到了一个让我疯狂的问题(可能只是我)!当我插入图像时,它没有显示。当我尝试绘制一个矩形时,它没有显示。这是我的代码:

import javax.swing.JFrame;
import javax.swing.JPanel;

import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;

//import java.awt.Image;
//import javax.swing.ImageIcon;

public class SpaceInvaders {
    // variables
    static Board table;

    public static void main(String[] args) {
        createGui();
    }

    static void createGui(){
         JFrame frame = new JFrame("Spane Invaders UK");
         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         frame.getContentPane().setPreferredSize(new Dimension(1000, 600));

         table = new Board();
         frame.add(table);

         frame.pack();
         frame.setVisible(true);
    }

}

class Board extends JPanel{

    //Image tank;

    public Board(){
        //ImageIcon ii = new ImageIcon(this.getClass().getResource("tank.png"));
        //tank = ii.getImage();
    }

    public void painComponent(Graphics g){
        super.paintComponent(g);
        Graphics2D g2d = (Graphics2D)g;
        //g2d.drawImage(tank, 10, 10, null);
        g2d.drawRect(50, 50, 10, 10);
    }
}

可能有一个简单的解决方案,实际上很简单,在Google上找不到它。然而,我被困住了。为什么没有发生?我该如何解决这个问题?

我评论了' Image'代码,因为它不是问题。

随意编辑。

2 个答案:

答案 0 :(得分:3)

除非在此处编写代码时输入错误,否则方法名称错误:

public void paintComponent(Graphics g){
    super.paintComponent(g);
    Graphics2D g2d = (Graphics2D)g;
    //g2d.drawImage(tank, 10, 10, null);
    g2d.drawRect(50, 50, 10, 10);
}

注意:如另一个答案所述,使用@Override注释会立即注意到这个错误。

答案 1 :(得分:2)

这是一个错字。

public void painComponent(Graphics g){

始终使用@Override注释来避免这些错误。