Bild im Panel anzeigen lassen

blackrose4me

Grünschnabel
Guten Abend meine Lieben :)

Es geht um folgendes:
Ich möchte in meinem Java-Formular (Frame AWT) nun auch Bilder anzeigen lassen, da ich nun, da das Programm und seine Funktionen stehen, es optisch ein wenig aufbessern möchte.

Wie man ein Bild in einem Java Frame erzeugt ist mir bewusst, das klappt auch.

Mein Problem - so hat es sich nun rausgestellt - ist mein Panel.

Nun wollte ich fragen ob jemand von euch mir vllt kurz helfen könnte, da ich nicht weiss, wie ich dieses Bild nun in meinem Panel anzeigen lassen kann nach längerer Ausprobiererei.

Erstmal einen kleinen Ausschnitt aus meinen Code:
PHP:
 public Image img;

//...oben ist code...

  public eingabeformular(String title)
  {
    super(title);
    addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent evt) { System.exit(0); }
    });
    int frameWidth = 683;
    int frameHeight = 620;
    setSize(frameWidth, frameHeight);
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    int x = (d.width - getSize().width) / 2;
    int y = (d.height - getSize().height) / 2;
    setLocation(x, y);
    Panel cp = new Panel(null);
    add(cp);

    Toolkit toolkit = Toolkit.getDefaultToolkit();
    MediaTracker mt = new MediaTracker (this);
    img = toolkit.getImage("jenny.jpg");
    mt.addImage(img,0);
    
    try
    {
      mt.waitForID(0);
    }
    catch (Exception e)
    {}

  //weiter unten ist code...
  }

//ausserhalb der klasse  folgt irgendwann die Methode paint :
  public void paint(Graphics g){
    if(img != null)
    {
      g.drawImage (img, 0, 0, this.getWidth (), this.getHeight (), this);
    }
  }

 //weiter unten ist noch mehr code...

Meine Frage an euch also: Wie kann ich ein Bild im Panel cp anzeigen lassen? :confused:

Info:
Da ich mein 750Zeilen Code nicht völlig umschreiben möchte, wäre ich euch wirklich sehr dankbar für eine Lösung. Import Klassen sind natürlich die richtigen vorhanden, sowie die public Variable "img"
 
Zuletzt bearbeitet:
Hallo,

die paint-Methode musst du beim Panel überschreiben.
Entweder du schreibst dir eine eigene Panel-Klasse oder du machst es so
Code:
Panel cp = new Panel(){

   public void paint(Graphics g){
      if(img != null)
      {
         g.drawImage(img,0,0,this.getWidth(),this.getHeight(), this);
      }
   }

};

Der Weg mit der eigenen Klasse ist meiner Meinung nach der bessere Weg.

MFG

Sascha
 
Hey,

und versuch mal ein revalidate() ; und repaint() ;
Damit das Panel neu gezeichnet wird und Änderungen sichtbar werden.

Wobei ich es auch mit dem Überschreiben machen würde.

Gruß
 
Zurück