Wczytanie obrazka ? problem

0

Mam taką klasę z metodą do wczytywania obrazka?

public class MethodsImages extends JComponent {

    public static BufferedImage getImage() {
        BufferedImage bufferedImage = null;
        try {
            bufferedImage = ImageIO.read(MethodsImages.class.getResource("images/ball_red.gif"));
        } catch (IOException ex) {
            Logger.getLogger(MethodsImages.class.getName()).log(Level.SEVERE, null, ex);
            System.out.println("Problem loading");
        }
        return bufferedImage;
    }
}

niestety, ta metoda
MethodsImages.class.getResource("images/ball_red.gif")
zwraca mi 'null'

Obrazki oraz tą klasę mam w tym folderze
projekt/src/images

Co może być nie tak ???

Jeszcz mam pytanie, czy jeśli pobiorę taki obrazek,
przypuśćmy od rozmierze 20X20,
a potem będe chciał wyświetlać większy rozmiar, jak to zrobić ?
Czy java sama powiększy/pomniejszy obrazek ?

0
  1. spróbuj wpisać adres bezwzględny obrazka
0

Próbuję każdą kombinację:
URL url = getClass().getResource("images\ball_red.gif");
url = getClass().getResource("g:\Andrzej\NetBeans\AnimacjaHgBzr\src\images\ball_red.gif");
url = getClass().getResource("g:\Andrzej\NetBeans\AnimacjaHgBzr\src\images\ball_red.gif");

I nic nie pomaga, mam Windows 7 !

1
ImageIO.read(new File(adres_względny_lub_bezwzględny));
0

OK, w sumie działa ale tylko adres bezwzględny!
Dlaczego?

  1.        File file = new File("\\images\\ball_teal.gif");
    
  2.        file = new File("g:\\Andrzej\\NetBeans\\AnimacjaHgBzr\\src\\images\\ball_teal.gif");
    
  3.        bufferedImage = ImageIO.read(file);
    

jeśli pobiera plik z lini '2.' to działa
a przy ścieżce względnej linia '1.' to nie odczytuje obrazu ??
dlaczego

1

Jak uruchamiasz program? Adres względny jest inny gdy wpisujesz polecenie java ... w konsoli, inny gdy uruchamiasz w Eclipse. (Jest taki sam jeżeli w projekcie w Eclipse nie tworzysz osobnych katalogów src i bin).

0

program uruchamiam z NetBeansa

1

Jak uruchamiasz z NetBeans, to katalogiem bieżącym jest katalog projektu. Adres względny musi być względem tego katalogu.

 file = new File("src/images/ball_teal.gif");

Mogą być (również w Windows) zwykłe ukośniki. W adresie względnym nie może być ukośnika na początku.
Jak chcesz się dowiedzieć jaki jest katalog bieżący, to dodaj na początku programu

System.out.println(System.getProperty("user.dir"));
0

w SPACJA końcu zadziałało, dzięki wielkie :)

Teraz mam problem jak ten obrazek powiększać, pomniejszać do określonych rozmiarów.
W zależności od tego jak użytkownik rozciągnie panel?

0

Jak zrobić aby cały forlder z obrazkami, był wkompilowany do projektu.

Chce przegrać projekt 'jar' i ma chodzić.
A w tej chwili tak nie jest bo trzeba by osobno obrazki przekopiować.

Jak to zrobić?

0

Jar to zip, wrzuć do jara katalog images z obrazkami. Wtedy możesz się do obrazków dobrać tak:

new ImageIcon(nazwaGłównejKlasy.class.getResource("images/"+nazwaObrazka))

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