PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Java swing - Bilder


Gast
2006-02-07, 16:10:06
Ich will mit swing (ja mit swing) in einem JPanel eine Grafik bzw ein Bild darstellen. Ich habe es Canvas versucht, aber so kommt man praktisch nicht an die Methoden von Graphics ran, die ja eigentlich sehr nützlich zu sein scheinen.

Was man dazu in Internet findet hilft nicht weiter, da es meist unvollständig oder unkommentiert ist.

Das scheint nicht der richtige Weg zu sein. Wie mache ich das also?

Idealerweise soll am Ende ein eine große Menge Bilder zu sehen sein, die auch noch anklickbar sind. Was eignet sich dazu? Bei swing möchte ich schon bleiben wenn das irgendwie geht.

Danke! :)

Monger
2006-02-07, 16:54:44
Was genau willst du denn darstellen? Ein JPEG?

Du bist schon auf der richtigen Spur. Du kannst auf einem Canvas eine Graphics zuweisen (paint). Graphics ist dabei eine ganz abstrakte Behandlung eines Bildes, und ist folgerichtig eine abstrakte Klasse.

Eine Klasse die eine Implementierung von Graphics verwendet, ist BufferedImage. http://java.sun.com/j2se/1.5.0/docs/api/java/awt/image/BufferedImage.html

Die besitzt eine Methode, mit der man ein Graphics Objekt (oder genauer: ein Graphics2D Objekt) sich zurückgeben lassen kann, und damit der Canvas was anbieten kann.

Die große Frage ist jetzt: wie lädt man das Dateiformat deiner Wahl, um es in ein brauchbares Format zu bekommen? Dazu hab ich leider grade nix gefunden.

Edit: da ist doch was: http://forum.java.sun.com/thread.jspa?threadID=260711&messageID=985157

Du brauchst das Java2D Framework. Da gibt es dann eine JPEGImageDecoder Klasse, die dir ein BufferedImage ausspucken kann. Das kannst du wiederum (indirekt) auf die Canvas klatschen.

Senior Sanchez
2006-02-07, 17:23:11
Noch einfach wäre es, wenn man in dem Panel nen Label centered, diesem keinen Text zuweißt, dafür aber nen ImageIcon setzt. Schon zeigt er das Bild an.

RMC
2006-02-07, 17:51:06
Man kann dem JPanel auch einfach nur ein ImageIcon hinzufügen:

jpanel.add(new ImageIcon("bild.jpg"));

EDIT: da bin ich mir aber nicht sicher ob das geht, weil add() verlangt ein Component. Weiß jetzt net ob ImageIcon ein Component ist.


So müsste es am Einfachsten gehen. Für "anklickbar" könntest du auch Buttons (JButton) hinzufügen und denen dann ein Bild zuweisen.

Oder du machst die eine eigene Klasse die von ImageIcon ableitet und dann kannst du da natürlich auch MouseListener hinzufügen und die Funktion fürs Anklicken selbst schreiben.