WinFuture-Forum.de: [java] Bild Auf Panel Einbinden - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

[java] Bild Auf Panel Einbinden


#1 Mitglied ist offline   ps915 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.119
  • Beigetreten: 17. Mai 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 10. Dezember 2009 - 19:50

Weiß jemand wie man ein Bild (png) in Java auf einen Panel einbindet.

Es ist kein JPanel, habe bei Google nur was für den JPanel gefunden.

Ich habe auch mal davon gehört dass man ein Label ohne Text einfach mit einem Icon, also dann mein Bild, belegen könnte. Aber auch hier habe ich alles nur für JPanel gefunden.

Weiß jemand wie man das mit einem "einfachen" Label oder Panel macht?

MfG
Toaster
0

Anzeige



#2 Mitglied ist offline   oversoul 

  • Gruppe: Mitglieder
  • Beiträge: 2
  • Beigetreten: 10. Dezember 09
  • Reputation: 0

geschrieben 10. Dezember 2009 - 21:42

Das ist eigentlich recht einfach zu realisieren.
Dafür muss man die Methode paint(Graphics g) überschreiben.


kleines Beispiel:

@Override
public void paint(Graphics g)
{
super.paint(g) //Wichtig, damit alle Komponenten auf dem Panel gezeichnet werden
g.drawImage(img,0,0,getWidth(),getHeight(),null);
}

img ist ein ImageObject, wobei es egal ist um wechles es sich handelt (zB BufferedImage),
die beiden ersten 0en stehen für die Koordinaten wo das Bild seine obere linke Ecke hat.
Die beiden Funktionen die mit übergeben werden geben die größe des Panels zurück, dadurch wird das Panel zu 100% ausgefüllt mit dem Bild. Das letzte übergebene Object ist null (also nichts) dort könnte man ein ImageObserver eingesetzt werden was aber denke bei dir nicht nötig ist.

Es ist wichtig, dass du eine eigene Klasse dafür schreibst, die von JPanel erbt
0

#3 Mitglied ist offline   ps915 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.119
  • Beigetreten: 17. Mai 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 10. Dezember 2009 - 21:52

Danke für die Antwort, so hätte ich das mit einem Normalen Frame gemacht, nur du schreibst ja auch die Methode für den JPanel?

Muss ich nun auf JPanel umsteigen?
0

#4 Mitglied ist offline   oversoul 

  • Gruppe: Mitglieder
  • Beiträge: 2
  • Beigetreten: 10. Dezember 09
  • Reputation: 0

geschrieben 10. Dezember 2009 - 23:06

Das geht Theoretisch sogar mit JLabels, da sie alle von javax.swing.JComponent stammen.

Da ein JFrame nicht anderes ist als ein JPanel mit Fensterrand.

Zumal es nicht mal wirklich ein umstieg ist.

Wenn man nähmlich ein JFrame erzeugt und dann das abgeleitete JPanel hinzufügst hast du automatisch die
richtige sichtbare Zeichenfläche, beim JFrame wird bei getSize() auch die Fläche unter dem Fensterbalken oben mitgerechnet

Wichtig ist dann halt nur, dass wenn du dann das Panel ins JFrame hinzufügst angeben must, wo das Panel sitzen soll zB. add(myPanel,BorderLayout.Center).
Das Panel gibt mir getSize() immer die sichtbare bemalbare fläche zurück.

Übrigens: Wenn du eine Componente dem JFrame hinzufügst wird es intern auf das JPanel des Frames hinzugefügt, da die Fläche auf dem JFrame ein JPanel ist
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0