tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von Technoblade
ERLEDIGT
NEIN
ANTWORTEN
6
ZUGRIFFE
879
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Marco Bockstatt Marco Bockstatt ist offline Grünschnabel
    Registriert seit
    Jul 2011
    Beiträge
    2
    Hi ich hab gehört man kann ein image auf einem JPanel einbinden.
    Leider hab ich keine ahnung wie das geht und mit der hilfe aus den anderen Thrads nicht wirklich erfolg gehabt. Vllt könnt ihr mir ja helfen. Hier ist mal n Teil von meinem Quellcode.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    
    //Panels erzeugen
        private void makePanels(){
            for(int x = 0; x < 15; x++){
                for(int y = 0; y < 15; y++){
                    this.add(p[x][y]);
                    p[x][y] = new JPanel();
                    p[x][y].setLocation(151 + x*50, 151 + y*50);
                    p[x][y].setSize(49,49);
                    p[x][y].setBackground(Color.LIGHT_GRAY);
                    p[x][y].setVisible(true);
                    //p[x][y].setEnabled(true);
                    }//innere for
                }//äußere for
            }//makePanels
     
        public void init() {
        makePanels();
             picture = getImage(getCodeBase(), "images/fractal.gif"); //des hab ich bisher gefunden
        }//end init
     
    public void paint(Graphics g) {
            g.drawImage(picture,p[actualX][actualY].getGraphics(), ImageObserver);
                    //wie kann ich hier angeben das des in dem Panel X,Y angezeigt wird?
    }//end paint
     

  2. #2
    Technoblade Technoblade ist offline Mitglied Gold
    Registriert seit
    Feb 2009
    Beiträge
    193
    Das kann viel einfacher gehen. Du kannst auf dein JPanel einfach ein JLabel rein packen. In das kannst du wie folgt ein Bild einbinden:

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    File imageFile = new File("C:/path/to/my/pictures.jpg");
    JPanel panel = new JPanel();
    BufferedImage image = null;
    try {
        BufferedImage image = ImageIO.read(imageFile);
    }
    catch(IOException ioex) {
        //abort
        System.exit(1);
    }
    panel.add(new JLabel(new ImageIcon(image)));

    Damit das so funktionierst brauchst du ausser den üblichen Paketen noch das Paket javax.imageio.*
    armbruch bedankt sich. 

  3. #3
    Marco Bockstatt Marco Bockstatt ist offline Grünschnabel
    Registriert seit
    Jul 2011
    Beiträge
    2
    Ja also danke erstmal
    aber bei mir klappt das nicht so wirklich. mein image wird nicht angezeigt...
    naja ich hab morgen nomol CT unterricht vllt weis der lehrer was :P
     

  4. #4
    Technoblade Technoblade ist offline Mitglied Gold
    Registriert seit
    Feb 2009
    Beiträge
    193
    Ansonste poste doch mal deinen Quelltext. Die Methode mit dem JLabel hat bei mir bisher immer funktioniert.
     

  5. #5
    SE Tutorials.de Gastzugang
    Ich würde hier mal auf einige ganz banale Fehlerquellen tippen

    1) FALSCHE relative Pfade ... versuche zum Test mal absolute
    2) Kein Decoder - das Format in dem die Bildinformationen vorliegen kann von Java nicht verarbeitet werden ... gängige Typen : jpg , png , gif , bmp
    3) Animiertes Gif - es gibt immer mal wieder Threads über Fehler in Java das animierte Gif's falsch / nicht animiert / gar nicht angezeigt werden ... versuchs stattdessen mal mit nem einfachen Pictogram in jpg oder png

    @Techno
    Es wird auch java.awt.image.* gebraucht da BufferedImage nunmal darin liegt !
     

  6. #6
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    Hallo,

    @Technoblade
    Gibt es einen Grund, dass du das Image erst noch als BufferedImage lädst?

    Gruß

    Sascha
     
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

  7. #7
    Technoblade Technoblade ist offline Mitglied Gold
    Registriert seit
    Feb 2009
    Beiträge
    193
    Jein. Praktisch macht es ja keinen Unterschied, zumindest in diesem Fall. Habe mir angewöhnt, auch wenn die Oberklasse ausreichen würde, immer die direkten Rückgabtypen von Methoden auch für die Variablen zu verwenden. Finde dann ist es besser lesbar.

    Weiterhin spart man sich im Zweifelsfall, wenn man später noch etwas ändern möchte und dafür Variablen/Methoden der Unterklasse braucht, ein wenig Schreibarbeit.
     

Ähnliche Themen

  1. JPanel zeigt Bild nicht an
    Von Eklaf im Forum Java Grundlagen
    Antworten: 8
    Letzter Beitrag: 10.05.11, 09:33
  2. JPanel als Bild abspeichern
    Von Avedo im Forum Java
    Antworten: 2
    Letzter Beitrag: 21.07.10, 12:35
  3. JPanel mit Bild
    Von $$Money$$ im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 0
    Letzter Beitrag: 18.12.08, 14:18
  4. Bild als Hintergrund auf JPanel
    Von RMI_17 im Forum Java
    Antworten: 10
    Letzter Beitrag: 10.01.08, 16:19
  5. Änderndes Bild im JPanel
    Von mashine-obf im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 6
    Letzter Beitrag: 21.02.05, 20:33