Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.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 解释paintComponent()和drawImage()的功能以及它们是如何实现的?_Java_Paintcomponent_Drawimage - Fatal编程技术网

Java 解释paintComponent()和drawImage()的功能以及它们是如何实现的?

Java 解释paintComponent()和drawImage()的功能以及它们是如何实现的?,java,paintcomponent,drawimage,Java,Paintcomponent,Drawimage,我正在剖析这个2d游戏教程,我不清楚paintComponent()和drawImage()方法在这段代码中到底做了什么,为什么。有人能解释一下吗 public class Board extends JPanel { private final int B_WIDTH = 350; private final int B_HEIGHT = 350; private final int INITIAL_X = -40; private final int IN

我正在剖析这个2d游戏教程,我不清楚
paintComponent()
drawImage()
方法在这段代码中到底做了什么,为什么。有人能解释一下吗

public class Board extends JPanel  {

    private final int B_WIDTH = 350;
    private final int B_HEIGHT = 350;
    private final int INITIAL_X = -40;
    private final int INITIAL_Y = -40;    
    private final int INITIAL_DELAY = 100;
    private final int PERIOD_INTERVAL = 25;

    private Image star;
    private Timer timer;
    private int x, y;

    public Board() {


        initBoard();        
    }

    private void loadImage() {

        ImageIcon ii = new ImageIcon("star.png");
        star = ii.getImage();        
    }

    private void initBoard() {

        setBackground(Color.BLACK);
        setPreferredSize(new Dimension(B_WIDTH, B_HEIGHT));
        setDoubleBuffered(true);

        loadImage();

        x = INITIAL_X;
        y = INITIAL_Y;

        timer = new Timer();
        timer.scheduleAtFixedRate(new ScheduleTask(), 
                INITIAL_DELAY, PERIOD_INTERVAL);        
    }


    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);

        drawStar(g);
    }

    private void drawStar(Graphics g) {

        g.drawImage(star, x, y, this);
        Toolkit.getDefaultToolkit().sync();
    }


    private class ScheduleTask extends TimerTask {

        @Override
        public void run() {
            x += 1;
            y += 1;

            if (y > B_HEIGHT) {
                y = INITIAL_Y;
                x = INITIAL_X;
            }

            repaint();
        }
    }

以下是AWT和Swing中重绘操作的一个重要总结:

关于您所询问的方法的细节在这里,但我将首先从更高层次的文章开始


您看过文档了吗?我想您的顶部链接已断开。