Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Bild in JPanel einfügen

540 views
Skip to first unread message

Yonah Brendon Grätz

unread,
Feb 12, 2011, 1:28:59 PM2/12/11
to
Hallo,

wie kann man ein *.jpg in ein JPanel mit BorderLayout einfügen?

Gruss yonah

Florian Schaetz

unread,
Feb 12, 2011, 1:55:40 PM2/12/11
to
Hallo,

> wie kann man ein *.jpg in ein JPanel mit BorderLayout einfügen?

überschreib dir doch einfach ne eigene JComponent, die an geeigneter
Stelle Graphics.drawImage(...) aufruft und schmeiß dass dann deinem
JPanel zu. Größe und so kannst du ja vom Image nehmen...

Gruß,

Flo

Yonah Brendon Grätz

unread,
Feb 12, 2011, 3:01:33 PM2/12/11
to
package Beschaedigungen;

import Mainfrm.*;
import MainControl.*;

import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.*;

/* FrameDemo.java requires no other files. */
public class Beschaedigungen extends JFrame {

public Beschaedigungen(){

JFrame dlg = new JFrame();
dlg.setTitle("Beschädigungsaufnahme");
dlg.add(createSchaden());
dlg.pack();
dlg.setVisible(true);
}
public class ImagePanel extends JPanel{

private BufferedImage image;

public ImagePanel() {
try {
image = ImageIO.read(new File("/home/yonah/ich.jpg"));
} catch (IOException ex) {
System.out.print("Error");
}
}

@Override
public void paintComponent(Graphics g) {
g.drawImage(image, 0, 0, 800, 900, null); // see javadoc
for more info on the parameters
}

}

private JPanel createSchaden() {
String[] location =
{ "--","rechts","links","vorne","hinten"};
String[] sliste =
{ "Verkleidung","Stossfänger","Kotflügel","Heckklappe" };
String[] dliste = { "Innenverkleidung","Dachhimmel und
Sonnenblenden" };
String[] rliste = { "erneuern","polieren" };

JComboBox hgs = new JComboBox(sliste);
hgs.setSelectedIndex(0);
hgs.addActionListener(hgs);

JComboBox orthg = new JComboBox(location);
JPanel schadenpanel = new JPanel();
GridLayout layout = new GridLayout(3,3);
schadenpanel.setLayout(layout);

JComboBox ds = new JComboBox(dliste);
ds.setSelectedIndex(0);
ds.addActionListener(ds);
JComboBox ortd = new JComboBox(location);

JComboBox rep = new JComboBox(rliste);
rep.setSelectedIndex(0);
rep.addActionListener(rep);


schadenpanel.add(new JLabel("Hauptgruppe"));
schadenpanel.add(hgs);
schadenpanel.add(orthg);
schadenpanel.add(new JLabel("Detailschaden"));
schadenpanel.add(ds);
schadenpanel.add(ortd);
schadenpanel.add(new JLabel("Nötige Reparatur"));
schadenpanel.add(rep);

JPanel schaden = new JPanel(new BorderLayout());

//Foto
// Scan, Add, Reset, Ok Menue
JPanel bildadd = new JPanel(new BorderLayout());
//Label Foto
JLabel foto = new JLabel("Für den Schaden einzufügendes
Foto:");

// Scann button
JButton scan = new JButton("Scan");
// Add file Button
JButton addfile = new JButton("Add File");
//Reset Button
JButton reset = new JButton("Reset");
//OK Button
JButton ok = new JButton("OK");

JPanel fotomenue = new JPanel(new GridLayout(1,4));
fotomenue.add(scan);
fotomenue.add(addfile);
fotomenue.add(reset);
fotomenue.add(ok);

//Panel zusammenbauen
bildadd.add(foto,BorderLayout.NORTH);
bildadd.add(new ImagePanel(),BorderLayout.CENTER);
bildadd.add(fotomenue,BorderLayout.SOUTH);

schaden.add(schadenpanel,BorderLayout.NORTH);
schaden.add(bildadd,BorderLayout.CENTER);
schaden.add(fotomenue,BorderLayout.SOUTH);

return schaden;
}

}

Kann mir jemand den Fehler sagen?

gruss yonah

Yonah Brendon Grätz

unread,
Feb 12, 2011, 2:46:02 PM2/12/11
to

public class ImagePanel extends JPanel{

private BufferedImage image;

public ImagePanel() {
try {
image = ImageIO.read(new File("/home/yonah/ich.jpg"));
} catch (IOException ex) {
System.out.print("Error");
}
}

@Override
public void paintComponent(Graphics g) {
g.drawImage(image, 0, 0, 800, 900, null);
}

}

Ich habe das jetzt so gemacht, leider wenn ich mit add(new ImagePanel
(),BorderLayout.Center); das Image einfüge, wird es zwar in der Grösse
die angegeben ist dargestellt, aber das Frame zeigt es nicht vollständig
an (habe dort pack())

Woran kann das liegen?

gruss yonah

Paul Ebermann

unread,
Feb 12, 2011, 4:07:11 PM2/12/11
to
Yonah Brendon Grätz skribis:

> Hallo,
>
> wie kann man ein *.jpg in ein JPanel mit BorderLayout einfügen?

Die einfachste Möglichkeit ist ein JLabel mit einem ImageIcon darin.

Willst du in dem JPanel nur das Bild, oder noch weitere Komponenten?

Was hat das BorderLayout damit zu tun?


Paul

Yonah Brendon Grätz

unread,
Feb 13, 2011, 12:23:32 AM2/13/11
to
Habs gelöst :-)

Gerhard Landeck

unread,
Feb 15, 2011, 8:01:55 AM2/15/11
to
On Sun, 13 Feb 2011 05:23:32 +0000 (UTC), Yonah Brendon Grätz
<yonah....@gmx.de> wrote:

>Habs gelöst :-)

Schön, dass alle an deiner Freude teilhaben dürfen :-)

----------------------------------------------
Bei Fehlern im Code ist das Chaos programmiert.
(Aus einem Text über Software Engineering)

0 new messages