# Bild in JFrame einfügen



## theoneand (9. Jun 2011)

hallo,
kurze ganz banale Frage, ich möchte nur ein Bild in mein JFrame einfügen, aber wenn ich es ausführe, wird das Bild irgendwie nicht angezeigt....
hat jmd ne idee was falsch ist 


Hier mein coding:



```
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;


public class Solution extends JFrame {
       public Solution() {
       super( "Solution");
       setDefaultCloseOperation( EXIT_ON_CLOSE);
       setLocation( 10, 10);
       setSize( 512,384 );
       ImageIcon icon = new ImageIcon ("C:\\Users\\x\\Desktop\\PuzzlePro\\src\\berg25.jpg");
       JLabel l1 = new JLabel (icon);


}


public static void main( String[] args) {
new Solution().setVisible(true);
}
}
```


----------



## hexx (9. Jun 2011)

Du musst das Label auch noch zum JFrame hinzufügen:


```
public class Solution extends JFrame {
        public Solution() {
                super( "Solution");
                setDefaultCloseOperation( EXIT_ON_CLOSE);
                setLocation( 10, 10);
                setSize( 512,384 );
                ImageIcon icon = new ImageIcon ("C:\\Users\\x\\Desktop\\PuzzlePro\\src\\berg25.jpg");
                JLabel l1 = new JLabel (icon);
                add(l1); // Label hinzufügen
        }
}
```


----------



## theoneand (9. Jun 2011)

Danke erst mal für die schnelle Antwort^^ war logisch, hätte man selber drauf kommen können.

Jetzt noch ne Frage, wir haben als Projekt nen Puzzle spiel, wo man mit Klick-Tausch das Bild wieder zusammen setzten kann.
Ich will jetzt gerne, dass wenn man das Spiel startet im menu-punkt Solution die möglichkeite hat, das eben erstellte bild anzeigen zu lassen.
wie kann ich das in mein bisheriges coding einfügen??

Hier der quellcode:


```
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import java.lang.String;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.Container;
import java.io.*;


public class PuzzlePro extends JFrame implements ActionListener {

    private int index;
    private JButton[] button;
    private JButton[] buttonclone;
    private JLabel label;
    private JLabel label2;
    

    public PuzzlePro() {
    
        super("Puzzle Pro");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize( 1040, 820);
        setResizable ( false );
        setLocationRelativeTo(null);
        JPanel panel = new JPanel(new GridLayout(4,4));
        index = -1;
        
        button = new JButton[17];
        for (int i=1; i<button.length; i++) {
            button[i] = new JButton();
            button[i].addActionListener(this);
            button[i].setIcon(new ImageIcon(getClass().getResource("berg"+i+".jpg")));

        }
        
        buttonclone = new JButton[17];
        for (int i=1; i<button.length; i++) {
            buttonclone[i] = new JButton();
            buttonclone[i].addActionListener(this);
            buttonclone[i].setIcon(new ImageIcon(getClass().getResource("berg"+i+".jpg")));
            }

        
        for(int i = 1; i < button.length; i++){
                JButton tmp = button[i];
                int zelle = (int) (Math.random()*(button.length - i) + i);
                button[i] = button[zelle];
                button[zelle] = tmp;
                }
                
        for(int i = 1; i < button.length; i++){
                panel.add(button[i]);
                button[i].setVisible(false);
                }
                
        JButton[] arrayCopy = new JButton[10];
              for (int i = 1; i < arrayCopy.length; i++) {
                  arrayCopy[i] = button[i];
                  }
              
        
        this.getContentPane().add(panel, BorderLayout.CENTER);
        this.getContentPane().add(label = new JLabel("Erstes Bild wählen"), BorderLayout.SOUTH);

    JMenu menu, submenu;
    JMenuItem menuItem;
    JMenuBar menuBar = new JMenuBar();
    
    menu = new JMenu( "GAME");          // Erzeugen eines Hauptmenüpunktes
    menuBar.add( menu);                       // Hinzufügen des Hauptmenüpunktes
    menuItem = new JMenuItem( "New Game"); // Erzeugen eines Untermenüs von Puzzle Pro
    menu.add(menuItem);
    

    menuItem.addActionListener( new ActionListener() {
      public void actionPerformed( ActionEvent e) {
              for (int i = 1; i < button.length; i++) {
              button[i].setVisible(true);
              }
      }
    });
    menuItem = new JMenuItem( "Exit");                    // Erzeugen eines Untermenüs von Puzzle Pro
    menu.add(menuItem);                                   // Untermenü wird dem Hauptmenü hinzugefügt
    menuItem.addActionListener( new ActionListener() {
      public void actionPerformed( ActionEvent e) {
        System.exit(0);                                      // Durch wählen des Menupunketes "Exit" wird das Fenster beendet
      }
    });

    menu = new JMenu( "Optionen");           // Erzeugen eines Hauptmenüpunktes
    menuBar.add( menu);                        // Hinzufügen des Hauptmenüpunktes
    
    menuItem = new JMenuItem( "Hilfe");
    menu.add(menuItem);
    menuItem.addActionListener( new ActionListener() {
      public void actionPerformed( ActionEvent e) {
        try
        {
        Desktop.getDesktop().open(new File("Hilfe.txt"));
        }
        catch(Exception eref)
        {
        }
      }
    });
    menuItem = new JMenuItem( "Handbuch"); // Erzeugen eines Untermenüs von Puzzle Pro
    menu.add(menuItem);
    menuItem.addActionListener( new ActionListener() {
      public void actionPerformed( ActionEvent e) {
        try
        {
        Desktop.getDesktop().open(new File("Handbuch.pdf"));
        }
        catch(Exception eref)
        {
        }
      }
    });

    menuItem = new JMenuItem( "About"); // Erzeugen eines Untermenüs von Puzzle Pro
    menu.add(menuItem);
    menuItem.addActionListener( new ActionListener() {
      public void actionPerformed( ActionEvent e) {
             JOptionPane.showMessageDialog(null, "                                         Puzzle Pro\n © by Steffen Kunz, Martin Reichert, Tobias Heldmayer\n                                       OOP2 SoSe 2011", "About", JOptionPane.CLOSED_OPTION);
      }
    });



    setJMenuBar( menuBar);                  // Erzeugen der kompletten Menüleiste
    }

    public void actionPerformed(ActionEvent e) {
        int curIndex = -1;
        for (int i=0; i<button.length; i++) {
            if (e.getSource().equals(button[i])) {
                curIndex = i;
                break;
            }
        }
        if(index==-1) {
            index = curIndex;
            label.setText(" Zweites Bild wählen");
        }
        else {
            swapIcons(index, curIndex);
            index = -1;
            label.setText(" Erstes Bild wählen");
        }
    }

    private void swapIcons(int index1, int index2) {
        Icon icon = button[index1].getIcon();
        button[index1].setIcon(button[index2].getIcon());
        button[index2].setIcon(icon);
    }

    public static void main(String[] args) {
        JFrame frame = new PuzzlePro();
        frame.setVisible(true);
    }
}
```


Muss ich das mit 2 Klassen machen oder kann ich das coding einfach ergänzen?? mit dem was du mir eben gezeigt hast?


----------

