Jak dodać grafikę z komputera do programu

0

Witam!

Mam problem z dodaniem grafiki do programu w javie.

public class Gra extends JFrame{
    
BufferedImage image;

    JFrame jFrame= null;
    Canvas canvas= null;
    Graphics2D g2d=null;
    BufferStrategy buffer=null;
    public Gra() throws IOException
    {

       File imageFile = new File("images/alien1.png");
        image=ImageIO.read(imageFile);
        
        setIgnoreRepaint( true );
        setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
        
        this.jFrame = new JFrame("Game");
        jFrame.setIgnoreRepaint( true );
        jFrame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
        
        this.canvas = new Canvas();
        canvas.setIgnoreRepaint( true );
        canvas.setSize( 1020, 860 );

        add(canvas);
        pack();
        setVisible(true);
        
        canvas.createBufferStrategy(2);
        this.buffer = canvas.getBufferStrategy();
        
        this.g2d = (Graphics2D) buffer.getDrawGraphics() ;
    }
       public void draw()
       {
        g2d.setColor(Color.black);
        g2d.fillRect(0, 0, 1020,860);
        g2d.drawImage(image, 0,0, this);
         }
    public static void main(String[] args) throws IOException 
    {
        
        Gra gra=new Gra();
        
        gra.draw();
        while(true)
        {
           gra.draw();
           gra.buffer.show();
        }
    }
}

i teraz chciałem dodać obrazek, który będzie ładowany do gry, jak to zrobić? Próbowałem ładować to wszystko do BufferedImage, tak jak widać w kodzie, ale wyskakuje mi błąd, że nie ma takiego pliku. Błąd jest gdzieś w kodzie, w sensie, kompletnie źle to robię, czy problem tkwi w złym umiejscowieniu pliku? Wyczytałem w internecie, że powinien się znajdować w projekcie w folderze bin/, aby móc się do niego odwoływać tak jak to robię w kodzie- stworzyłem więc taki folder, ale nic to nie daje.

Z góry dziękuje!

1

Plik alien1.png powinien się znajdować w podfolderze images folderu projektu.
Dokładniej, instrukcja

File imageFile = new File("images/alien1.png");

powoduje, że plik alien1.png jest szukany w podfolderze images folderu bieżącego. Jeśli uruchamiasz program w IDE (Eclipse, NetBeans,..), to folderem bieżącym jest folder projektu, jeśli uruchamiasz program wpisując polecenie w konsoli, to folder bieżący jest inny.

Druga sprawa, pętla

        while(true)
        {
           gra.draw();
           gra.buffer.show();
        }

wygląda absurdalnie.

0

Pomogło, dzięki.
Co do pętli- może jest absurdalna, ale chodziło o pokazanie problemu, nie chciałem wklejać całego kodu, więc usunąłem to co nieistotne.

Dziękuje! :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1