繁体   English   中英

如何重新粉刷我的 window? (爪哇)

[英]How do I repaint my window? (Java)

编辑:它现在应该做的是打开一个新的 window 并显示标题图像(在背景上)。 当我运行它时,它只显示背景(没有错误消息或任何东西)。 是的,我稍后会做 animation,这是一个测试程序,我通过它学习在 Java 中编写游戏代码。

编辑:按照 MadProgrammer 所说的,我得到了要显示的标题图像(我没有删除while因为我不知道用什么替换它),但它没有显示在我的列表指定的坐标处。 有任何想法吗? 或者有人知道我可以用什么代替while

我已经尝试了大约一百万种不同的东西,但我什至无法在屏幕上移动多个图像。 到目前为止,这是我的代码:

主class:

import java.awt.Toolkit;

import javax.swing.JFrame;

public class Game {

    static JFrame window = new JFrame();
    static GameCanvas canvas = new GameCanvas();

    public static void main(String[] args0) {

        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        window.setResizable(false);
        window.setTitle("Fastball");
        window.setIconImage(Toolkit.getDefaultToolkit().getImage("icon.png"));
        window.setBounds(300, 30, 805, 625);
        window.getContentPane().add(canvas);
        window.setVisible(true);
        mainMenu();

    }

    public static void mainMenu() {

        canvas.addImage("title.png", 0, 0);
        canvas.repaint();

    }

}

Canvas class:

import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.util.List;
import java.awt.Toolkit;
import java.util.ArrayList;

import javax.swing.JComponent;

class GameCanvas extends JComponent {

    List<String> ImagePathes = new ArrayList<String>();
    List<Integer> xPositions = new ArrayList<Integer>();
    List<Integer> yPositions = new ArrayList<Integer>();

    int paintProgress;
    Image imageToPaint;

    public void addImage(String path, int x, int y) {

        ImagePathes.add(path);
        xPositions.add(x);
        yPositions.add(y);

    }

    public void clearImages() {

        ImagePathes.clear();
        xPositions.clear();
        yPositions.clear();

    }

    public void paintComponent(Graphics g) {

        super.paintComponent(g);

        Graphics2D g2 = (Graphics2D) g;

        Image background = Toolkit.getDefaultToolkit().getImage("background.png");
        g2.drawImage(background, 0, 0, this);

        paintProgress = 0;
        while(ImagePathes.size() > paintProgress) {

            imageToPaint = Toolkit.getDefaultToolkit().getImage(ImagePathes.get(paintProgress));
            g2.drawImage(imageToPaint, xPositions.get(paintProgress), yPositions.get(paintProgress), this);

            paintProgress++;

        }

        g2.finalize();

    }

}

请尽可能简单地告诉我如何修复我的代码。 并且避免将我重定向到其他问题或诸如此类的问题,因为我已经在 Google 上搜索了大约 10 亿次。 提前谢谢。 :)

看...我练习在 java 中制作 window:

    import javax.swing.*;
import java.awt.*;

public class Window extends JFrame

{


JPanel pnl = new JPanel();

就是这样...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM