Dlaczego nie rysuje?

0

Powiedzcie mi dlaczego nie jest rysowany obrazek?

Siedzę nad tym od groma i nie moge rozgryźć:/

Czarny prostokąt(fillRect) się rysuje, ale nic na nim:/ '

Nie podawalem kodu, z mainem tam mam klase ktora dziedziczy po JFrame i mam dodany panel.
I

 package pacman;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JPanel;

public class Game extends JPanel { 
    
    Pac pacman = new Pac();
   
    public void Game(){
        setFocusable(true);
        setBackground(Color.BLACK);
        setDoubleBuffered(true);
    }
    
@Override
    public void paint(Graphics g){
        super.paint(g);
        Graphics2D g2d = (Graphics2D) g;
        g2d.setColor(Color.black);
        g2d.fillRect(0, 0,this.getWidth(),this.getHeight());
        drawPac(g2d);
       
        
    }
    
public void drawPac(Graphics2D g2d){
        g2d.drawImage(pacman.image, pacman.x, pacman.y, 100, 100, this);
        }
}

II

 package pacman;
import java.awt.Image;
import javax.swing.ImageIcon;

public class Actor {
    int x,y;
    int dv;
    Image image;
    public void Actor(){
    }
      
}
package pacman;
import pacman.Game;

import javax.swing.ImageIcon;
import java.awt.Graphics2D;

III
public class Pac extends Actor {
    
    public void Pac(){
        
        try{
        image = new ImageIcon(Pac.class.getResource("../img/Pac00.gif")).getImage(); 
        x=0;
        y=0;
            }
        catch (Exception e){
            System.out.println("Blad prz otwieraniu");
            System.exit(0);  }
     }
    
}
 
0

na początek obsłuż w klasie Pac odpowiednio wyjątek. Myśle że IOException będzie odpowiedni. Później w obsłudze wyjątku ex.printStackTrace(); Wtedy będziesz wiedział czy Ci się obrazek w ogóle załadował.

0

masz błąd:
masz metodę
public void Pac()

a chyba chciałeś zrobić konstruktor, on nie zwraca nic:
public Pac(){

0

Zrobiłem tak jak kazaliście, rzeczywiscie w konsturktorze sie walnałem.

Niestety nie da się zmienic na IOException gdyż nie jest on obługiwany przez image.

widze ze problem tkwi w tym ze obrazek nie jest wczytywany, gdyz po utworzeniu obiektu pac, w konstruktorze dodalem wyisanie image, i wypisuje null po wczytaniu.

Tylko dlaczego w ogóle kompilator nie wyrzuca błędu? I co zrobić żeby się dobrze wczytał. Obrazek jest umieszczony w folderze img, który jest w głównym folderze projektu. Wydaje mi się że ścieżkę podałem dobrą?

0

Przenieś katalog img do katalogu bin i trochę zmień kod

image = new ImageIcon(Pac.class.getResource("/img/Pac00.gif")).getImage();

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