2012-10-22 16 views
5

Próbuję dodać obraz do jednej klatki, ale wygląda na to, że nie działa. Obraz utworzony przez ImageIcon z określonego pliku. Plik obrazu znajduje się w katalogu szewów, w którym istnieje plik Java.Jak dodać ImageIcon do JFrame?

import java.awt.BorderLayout; 

import javax.swing.ImageIcon; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 

    public class image { 

     public static void main(String args[]) 
     { 
      TimeFrame frame = new TimeFrame(); 
     } 
    } 

    class TimeFrame extends JFrame 
    { 
     //Image icon = Toolkit.getDefaultToolkit().getImage("me.jpg"); 
     ImageIcon icon = new ImageIcon("me.jpg"); 
     JLabel label = new JLabel(icon); 
     public TimeFrame(){ 
      this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      setTitle("My Frame"); 
      setSize(500,400); 
      //this.setIconImage(icon); 
      add(label,BorderLayout.CENTER); 
      setVisible(true); 
     } 


    } 
+0

Proszę spojrzeć, jak [dodawać obrazy do projektu] (http://stackoverflow.com/a/9866659/1057230) i to [odpowiedź] (http://stackoverflow.com/a/11372350/1057230) w celu uzyskania dalszych wyjaśnień, jeśli robisz to ręcznie (bez IDE). –

Odpowiedz

5

Jeśli ikona jest obok pliku TimeFrame java, należy użyć

java.net.URL imgUrl = getClass().getResource("me.jpg"); 
ImageIcon icon = new ImageIcon(imgUrl); 

lub

java.net.URL imgUrl = TimeFrame.class.getResource("me.jpg"); 
ImageIcon icon = new ImageIcon(imgUrl); 

Ty (prawdopodobnie) poszukuje obecnie dla niego w katalogu roboczym, który cię można wyprowadzać za pośrednictwem

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

Jak mówi dokumentacja getResource (...) Znajduje zasób o podanej nazwie. Ta metoda zwraca wartość null, jeśli nie znaleziono zasobu o tej nazwie ... ale nadal nie jestem pewien, dlaczego nie działał wcześniej ... Użyłem tego i działało dobrze: Image image = ImageIO.read (nowy plik (" SydneyOperaHouse.jpg ")); – Bernard

4

Czy wypróbujesz ten?

ImageIcon ImageIcon = new ImageIcon("me.jpg"); 
    Image Image = ImageIcon.getImage(); 
    this.setIconImage(Image); 
+0

23 października 0:24:38 MacBooka-Pro.local Java [592] : CGContextGetCTM: nieprawidłowy 0x0 kontekst 23 października 0:24:38 MacBooka-Pro.local Java [592] : CGContextSetBaseCTM: nieprawidłowy 0x0 kontekst października 23 00:24:38 MacBook-Pro.local java [592] : CGContextGetCTM: niepoprawny kontekst 0x0 23 października 00:24:38 MacBook-Pro.local java [592] : CGContextSetBaseCTM: nieprawidłowy kontekst 0x0 – Bernard

+0

tutaj jest błąd dostaję teraz! – Bernard

1

Wystarczy zmienić katalog na „src/me.jpg”