# Ein externes Bild in ein JFrame einfügen



## Sinos (29. Jun 2012)

Hallo,

Bin gerade dabei ein Kniffelspiel für Informatik 10Klasse zu programmieren, bin gerade bei der GUI.
Ich benutze BlueJ.
Nun habe ich ein problem: Ich möchte im JFrame ein externes Bild von der Festplatte einfügen.
Habe ein bisschen gegoogelt, auch etwas gefunden.Aber es wird kein Bild im JFrame angezeigt. 


```
import java.lang.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.applet.Applet;
import javax.swing.JOptionPane;

public class Oberflaeche {
    private JFrame fenster;
    private ImageIcon feld;

 public Oberflaeche() {

        fenster = new JFrame("Kniffel");
        fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        fenster.setSize(800, 640);
        fenster.setLocation(50, 20);
        fenster.setLayout(new GridBagLayout());
        Toolkit.getDefaultToolkit().setDynamicLayout(true);

        feld = new ImageIcon( "D:\\Schule\\Kniffel\\tabelle.jpg" ); <- Gibt es auch eine Alternative?
        JPanel feld = new JPanel();
        fenster.add(feld);
        feld.setBounds(30, 30, 110, 110); -> sollte an der rechten Seite des JFrames angezeigt werden
        feld.setVisible(true);
 }
}
```

(Code ist gekürzt)

Wär nett wenn sich das jemand einmal anschauen könnte evtl. einen Verbesserungsvorschlag geben könnte.


----------



## Marco13 (29. Jun 2012)

Es wäre gut, wenn du sagen würdest, was mit "einfügen" gemeint ist: In einem eigenen kleinen Bereich (das würde mit dem ImageIcon gehen, auch wenn man absolute Pfadangaben vermeiden sollte, und man sicherstellen müßte, dass das Bild existiert, und man müßte sich um's Layout kümmern und so...), oder soll das ein Hintergrundbild werden, wo noch drübergezeichnet wird?


----------



## vanny (29. Jun 2012)

[DUKE]tabelle.jpg
....feld.setBounds(30, 30, 110, 110); -> sollte an der rechten Seite des JFrames angezeigt werden[/DUKE]
Mir drängt sich der Verdacht auf, dass du dich mit JTable auseinadersetzen solltest ^^

und Null Layout = EVIL // wobei ich keines sehe aber die Bounds o0


----------



## Sinos (29. Jun 2012)

@Marco
Danke erstmal für die schnelle Antwort.
Affenhitze mag sein, bei mir regnet es :/

Ich will das Bild an der rechten Seite des JFrames einfügen und später textfelder drüber legen, um die Punkte einzutragen. Daher ImageIcon.
Wegen dem Aufrufen der Bilddatei, eine alternative ist gern gesehen.

@vanny
Ich setze mich mal damit auseiander JTable


----------



## Sinos (29. Jun 2012)

Hier ein neuer Versuch von mir, bild wird nun angezeigt, nur es ist zu groß für das Fenster.


```
ImageIcon icon1 = new ImageIcon(Oberflaeche.class.getResource( "tabelle.jpg" ) );
        JLabel l1 = new JLabel( icon1 );
        fenster.pack();
```

Quelle: Java ist auch nur eine Insel


----------



## vanny (29. Jun 2012)

Der Kniffelzettel ist (wie auch dein Bildtitel) eine Tabelle.
Warum drückst du dir ein Tabellenbild in den Hintergrund um dann mit Textfeldern rumzupopeln?

IST KEIN GUTER ANSATZ und das bedeutet i.d.R. viel Arbeit für nix.



Gruß Vanny


----------



## Sinos (29. Jun 2012)

Ich könnte eine Tabelle drüber legen.
Habe wie schon gesagt nur noch Probleme mit der Position im Fenster.
Momentan liegt es zentral in der Mitte, ich möchte es aber am rechten fensterrand haben.


----------



## vanny (29. Jun 2012)

Ok,
noch einen Versuch:
1. Die Positionierung innerhalb deiner GUI ist die eine Sache. Nutze einfach die Suchfunktion im Forum hier und schau dir Beiträge zum Thema LayoutManager an.

2. Deine Tabelle. Wenn dir bewusst ist (dem scheint nicht so:noe, dass du mit Hilfe einer/s JTable eine Dynamische Tabelle erzeugen kannst (und ja am Aussehen lässt sich da auch ne Menge schrauben), warum zum Henker willst du immernoch dieses olle Bild in den Hintergrund laden.
Das brauchst du nicht für Kniffel und du wirst damit auch nicht glücklich.

...also nochmal deinen Kopf nimmt und bei 90° in die Kurzwäsche.

ich hoffe es hilft
Gruß Vanny


----------



## Sinos (15. Jul 2012)

hat sich erledigt


----------

