Java程序不希望从子类中绘制图像

Java程序不希望从子类中绘制图像,java,image,graphics,Java,Image,Graphics,我只是想为我的游戏画一个背景。我使用的是一张800x600的天空图片,是用颜料画的 快速解释这部分代码:StatoGame将绘制我们在游戏中看到的所有对象,MappaReader从文件加载地图,TextureReader用于加载图像 这是我的代码: (我在游戏中看到的所有的班级都将被抽签) (为游戏加载图像的类) 问题是: 当我从菜单进入游戏时,图形将冻结,但我可以看到程序将写入字符串“RUNNING!!!!!!!!!!!”(StatoGame类中有一个系统输出,以查看游戏是否正在运行。) 如果

我只是想为我的游戏画一个背景。我使用的是一张800x600的天空图片,是用颜料画的

快速解释这部分代码:StatoGame将绘制我们在游戏中看到的所有对象,MappaReader从文件加载地图,TextureReader用于加载图像

这是我的代码:

(我在游戏中看到的所有的班级都将被抽签)

(为游戏加载图像的类)

问题是:

当我从菜单进入游戏时,图形将冻结,但我可以看到程序将写入字符串“RUNNING!!!!!!!!!!!”(StatoGame类中有一个系统输出,以查看游戏是否正在运行。)

如果我加载较小的图像(例如100x100px)而不是原始背景,它将随机工作

如果我加载一个更小的32x32px图像而不是原始背景,它将始终工作

如果我删除了绘制背景的代码,所有这些都可以工作

如果我删除绘制背景的代码并使用

ManipolatoreImmagini MI = new ManipolatoreImmagini();
        BufferedImage background = MI.CreaTrasparenza("Textures/Mappa/background_cielo.png", 255, 0, 255);
        g.drawImage(background, 0, 0, Game.risoluzioneFinestraX, Game.risoluzioneFinestraY, null);
在班级比赛中画出来,一切都会很好

所以很明显,在其他类中加载的绘图图像有问题。。但如果图像很小,则很有可能使所有图像都正常工作。我没有找到解决办法。希望有人能帮助我

对不起,这是英语,这是所有的代码

package lettori;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.StringTokenizer;
import main.StatoGame;
import minor.ErrorManager;
import minor.ManipolatoreImmagini;


public class MappaReader {

    String percorsoLivello;
    StatoGame SG;
    ErrorManager EM;
    ManipolatoreImmagini MI;

    public MappaReader(String PL, StatoGame SGp) {

        SG = SGp;
        MI = new ManipolatoreImmagini();
        percorsoLivello = PL;
        mappaLoader();
        //mappaConfigLoader();


    }

    void mappaConfigLoader() {
        try (BufferedReader br = new BufferedReader(new FileReader(percorsoLivello + "config.ini"))) {
            String riga;
            while ((riga = br.readLine()) != null) {
                if (riga.contains("#")) {
                } else if (riga.contains("=")) {
                    StringTokenizer stringTokenizer = new StringTokenizer(riga, "=");
                    boolean ifNomeVariabile = true;
                    String nomeVariabile = "";
                    while (stringTokenizer.hasMoreElements()) {

                        if (ifNomeVariabile == true) {
                            nomeVariabile = stringTokenizer.nextElement().toString();
                            ifNomeVariabile = false;
                        }                   
                        else {
                            switch (nomeVariabile) {
                            case "background":
                                SG.TR.background = MI.CreaTrasparenza(stringTokenizer.nextElement().toString(), 255, 0, 255);
                                break;
                            }

                        }

                    }
                }
            }
        }

        // Gestione errori
        catch (FileNotFoundException e) {
            EM = new ErrorManager(e.toString(), "Errore");
            EM = null;
        } catch (IOException e) {
            EM = new ErrorManager(e.toString(), "Errore");
            EM = null;
        }
    }





    void mappaLoader() {
        try {
            BufferedReader br = new BufferedReader(new FileReader(percorsoLivello + "Mappa.txt"));
            String riga;

            int y = 0;

            while ((riga = br.readLine()) != null) {
                StringTokenizer st = new StringTokenizer(riga, " ");
                int x = 0;
                while (st.hasMoreTokens()) {
                    SG.mappa[x][y] = st.nextToken();
                    x++;
                }
                y++;

            }
        } catch (IOException e) {
            EM = new ErrorManager(e.toString(), "Errore");
            EM = null;
        }
    }

}
package lettori;

import java.awt.image.BufferedImage;
import main.GameManager;
import main.StatoGame;
import minor.ManipolatoreImmagini;

public class TexturesReader{



    ManipolatoreImmagini MI;
    StatoGame SG;

    // TEXTURES
    // ATTENZIONE : i blocchi normali (esempio blocco_erba),
    // Sono di 28x32 per far si che le decorazioni possano
    // essere disegnate

    public BufferedImage background;
    public BufferedImage blocco_erba;

    public BufferedImage blocco_erba_deco_1;
    public BufferedImage blocco_erba_deco_2;

    public BufferedImage blocco_erba_lato_0;
    public BufferedImage blocco_erba_lato_1;
    public BufferedImage blocco_erba_lato_2;

    public BufferedImage blocco_erba_lato_0_flip;
    public BufferedImage blocco_erba_lato_1_flip;
    public BufferedImage blocco_erba_lato_2_flip;


    public TexturesReader() {

        MI = new ManipolatoreImmagini();

        //background = MI.CreaTrasparenza("Textures/Mappa/background_cielo.png", 255, 0, 255);
        background = MI.CreaTrasparenza("Textures/Mappa/background_cielo.png", 255, 0, 255);
        blocco_erba = MI.CreaTrasparenza("Textures/Mappa/blocco_erba.png", 255, 0, 255);

    }
}
ManipolatoreImmagini MI = new ManipolatoreImmagini();
        BufferedImage background = MI.CreaTrasparenza("Textures/Mappa/background_cielo.png", 255, 0, 255);
        g.drawImage(background, 0, 0, Game.risoluzioneFinestraX, Game.risoluzioneFinestraY, null);