problem z załadowaniem image

0

Witam, ostattnio zacząłem swoją przygodę z Javą i postanowiłem zrobić sobie mały projekt. Do tego celu potrzebuję załdować obraz z pliku lecz mam problem a mianowicie:

 
     javax.imageio.IIOException: Can't read input file!
	at javax.imageio.ImageIO.read(ImageIO.java:1275)
	at Ship.<init>(StarWar.java:67)
	at GameFrame.<init>(StarWar.java:50)
	at StarWar$1.run(StarWar.java:24)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:641)
	at java.awt.EventQueue.access$000(EventQueue.java:84)
	at java.awt.EventQueue$1.run(EventQueue.java:602)
	at java.awt.EventQueue$1.run(EventQueue.java:600)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:611)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

<image src="cos.png">zdj</image>

class Ship extends JComponent 
{
	public Ship()
	{
		try
		{
			img = ImageIO.read(new File("prom.png"));
		}
		catch(IOException e)
		{
			e.printStackTrace();
		}
		
	}
	public void paintComponent(Graphics g)
	{
		if(img == null)
		{
			return;
		}
		g.drawImage(img, 200, 650, null);
	}
	private Image img;
}
 
0

Jesteś pewien że ten twój obrazek jest w odpowiednim miejscu? Bo ja myśle że ścieżka jest błędna... I to ImageIO to też ni w pięć ni w dziewięć. Spróbuj czegoś takiego:

(Ship.class.getResource("prom.png")).getImage();
0

noo wydaje mi się że jest ok zresztą załącznik pokazuje jaki jest układ katalogów (zdjęcie cos.png to załacznik)

0

no zrobiłem jak mówisz:

 
  //img = ImageIO.read(new File("prom.png"));
    img = (Ship.class.getResource("prom.png")).getImage();

i mam coś takiego:

The method getImage() is undefined for the type URL

0

Aj bo mi odgryzło kawałek, mea culpa:

new ImageIcon(Ship.class.getResource("prom.png")).getImage();
0

ok działa. Dzięki. A z racji tego iż mam niewielkie doświadczenie z Javą to zapytam co jest złego w tym?

 
  img = ImageIO.read(new File("prom.png"));

czy tak się tylko wczytuje obrazy z okienka wyboru pliku (chooser czy jakoś tak)?

0

ImageIO = "A class containing static convenience methods for locating ImageReaders and ImageWriters, and performing simple encoding and decoding."
To jest taka klasa która zwraca ci jakieś BufferedImage. To jest klasa która przyda się jak coś z tym obrazkiem chcesz robić, niekoniecznie jak chcesz go tylko wyświetlać.
A nie wyświetlalo się zapewne dlatego że ściezka była blędna (patrz że w moim przykładzie odnoszę się do tej ściezki względem Ship.class)

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