# Image in JPanel/JLabel laden?



## Reality (3. Nov 2004)

Hi,
gibt es eine Möglichkeit ein Image in ein JLabel o.ä. zu laden? Laut API kann JLabel nur Icons laden. Gibt es vielleicht ähnliche Klassen die das können?
Ich möchte für ein Spiel nämlich ein Menu erstellen.

Ansonsten schreibe ich mir selbst eine Button-Klasse, was aber etwas aufwendig wäre.

Liebe Grüße
Reality


----------



## Roar (3. Nov 2004)

new JLabel(new ImageIcon(einImage));


----------



## Reality (3. Nov 2004)

Hi,
irgendwie geht das nicht:


```
import javax.swing.*;

public class Menu {

  private JFrame frame;
  private JPanel contentPane = new JPanel();
  private JLabel menuExit1;

  private ImageLoader il = new ImageLoader();
  Menu(Main frame){
    this.frame = frame;

    menuExit1 = new JLabel(il.menuExit1); //Hier wird das image geladen

    contentPane.add(menuExit1);
    frame.setContentPane(contentPane);
  }
}
```


```
import java.io.File;
import java.awt.*;
import javax.swing.*;
import java.applet.*;
import java.net.URL;
import java.awt.image.*;

public class ImageLoader{
  

  Icon menuExit1;

  AudioClip die;

  ImageLoader(){
    String path = "";
    try{
      File f = new File("Images");
      path = f.getAbsoluteFile().toString();
      path = path.replaceAll("\\\\", "/");
    }catch(Exception e){}


    try{
      URL audioPath = new URL(path + "/Sounds/BomberSndEffects/Die.mid");
      die = new java.applet.Applet().getAudioClip(audioPath);
      die.play();
    }catch(Exception e){}

        menuExit1 = new ImageIcon(path + "/BomberMenu/Exit Down.gif");
  }
}
```

Liebe Grüße
Reality


----------



## Roar (3. Nov 2004)

hmm...


			
				Roar hat gesagt.:
			
		

> new JLabel(*new ImageIcon(*einImage*)*);


----------



## Reality (3. Nov 2004)

Nun, wenn ich ImageIcon menuExit1; schreibe, dann kommt ebenfalls nichts.

Liebe Grüße
Reality


----------



## Reality (4. Nov 2004)

ALso ich habe mal ein neues Projekt erstellt und so klappt es wunderbar:


```
import javax.swing.*;

public class Test2 extends JFrame{
  
  ImageIcon img;
  JPanel contentPane = new JPanel();
  JLabel label;
  
  Test2(){
    img = new ImageIcon("D:/Programming Language/Java-Zeugs/Bomberman/Images/BomberMenu/Exit Down.gif");
    label = new JLabel(img);
    contentPane.add(label);
    setContentPane(contentPane);
  }
  
  public static void main(String[] args) {
    Test2 frame = new Test2();
    frame.setSize(400, 400);
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
}
```

Irgendwas hab ich oben mal falsch gemacht. Nur was?! ???:L


----------



## Reality (4. Nov 2004)

Verdammt!
Der obere Code will irgendwie nicht.
Es geht nicht mal mit frame.getContentPane.add(menuExit1);
Was soll ich jetzt machen?! :shock:


----------



## Roar (4. Nov 2004)

UMM
du muss ein ImageIcon instantiieren und als argument ein Image übergeben. oder einfach direkt dein ImageIcon instantieiren mit der url oder pfad als argument
und Icons kann man nicht auf einen Container/JPanel adden


----------



## Reality (4. Nov 2004)

Roar hat gesagt.:
			
		

> UMM
> du muss ein ImageIcon instantiieren und als argument ein Image übergeben. oder einfach direkt dein ImageIcon instantieiren mit der url oder pfad als argument


So habe ich es ja gemacht. Der letzte Code den ich gepostet habe funktioniert ja, nur wenn ich ihn an den oberen anpasse, funktioniert er nicht.


> und Icons kann man nicht auf einen Container/JPanel adden


Habe ich auch nicht, menuExit1 war in diesem Fall ein Label. Vom Namen her nicht erkennbar, ich weiss, sorry.

Liebe Grüße
Reality


----------



## Roar (4. Nov 2004)

was funktinoiert denn jetzt genau nicht?


----------



## Reality (4. Nov 2004)

Es wird einfach nichts angezeigt. Es kommt nicht mal eine Exception.
Ich glaube um das Problem werde ich mich erst später kümmern. Für das habe ich gerade keine Zeit.

Liebe Grüße
Reality


----------



## Student (8. Nov 2004)

du hast nicht wirklich eine leerstelle in dem dateinamen, oder? :shock:
mach die mal weg ;-)

sollte ja eigentlich keinen unterschied machen, aber hey .. das habe ich eingeprügelt bekommen, da muss ich das auch weitergeben


----------

