Bilder übereinander legen

Status
Nicht offen für weitere Antworten.
W

Wassim

Gast
Hallo!

Ich würde gerne in eine JAVA Applikation ein Hintergrundbild anzeigen lassen, und darüber nochmal ein paar kleinere Bilder auf die man dann irgendwann klicken können soll.
Das Problem ist, dass nur das Hintergrundbild angezeigt wird, und das zweite dann schon nicht mehr.
Weiß jemand woran das liegt?
Ich hänge da echt schon ewig dran.

Hier der Code:

Code:
import java.awt.*;
import java.awt.image.BufferedImage;
import java.awt.event.*;
import java.io.File;
import java.io.IOException;
import javax.swing.*;
import javax.imageio.ImageIO;



public class ImageDisplayer extends JFrame{
    static String imageFile = "background.gif";
    static String homeFile = "home_large.gif";


    public void init() {
        Image bi = null;
        try
        {
            File f = new File("background.gif");
            bi = ImageIO.read(f);
        }catch(IOException e){}


    }

    public static void main(String[] args) {

        //ImagePanel homePanel = new ImagePanel(Homeimage);

        JFrame f = new JFrame("MMI - Webpage");

        f.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });


        Image image = null;
        Image home = null;
            try {
                // Read from a file
                File file = new File("background.gif");
                image = ImageIO.read(file);
                File homefile = new File("home_large.gif");
                home = ImageIO.read(homefile);

                // Read from an input stream

            } catch (IOException e) {
            }

            // Use a label to display the image
            JFrame frame = new JFrame();
            JLabel label = new JLabel(new ImageIcon(image));
            JLabel HomeLabel = new JLabel(new ImageIcon(home));
            Container c= frame.getContentPane();
            c.setLayout(null);
            label.setBounds(0,0,1024,768);
            frame.getContentPane().add(label, null);
            HomeLabel.setBounds(0,0,150,73);
            frame.getContentPane().add(HomeLabel, null);
            frame.pack();
            frame.setSize(1024,768);
            frame.setVisible(true);
    }
}

class ImagePanel extends JPanel {
    Image image;

    public ImagePanel(Image image) {
        this.image = image;
    }

    public void paintComponent(Graphics g) {
        super.paintComponent(g); //paint background

        
        g.drawImage(image, 0, 0, this); 

        
    }
}

Vielen Dank!

Wassim
 
G

Guest

Gast
Ok, habe es jetzt irgendwie GANZ anders gelöst... wobei ich der Meinung bin dass ich das sicher zu umständlich gemacht habe... aber was soll's . Es funzt.
Eine letzte Hürde habe ich aber noch:
Ich möchte, dass wenn man mit der Mouse über ein Bild geht das Bild gegen ein anderes ausgetauscht wird.
Das kriege ich ums Verrecken nicht hin.
Habe es folgendermaßen probiert (siehe startAnimation() ). Die Ausgaben "I'm in" und "I'm out" kommen wenn ich mit der Mouse in das Bild "t1Label" bzw. raus gehe. Aber das Bild wrd nicht ausgetauscht.

Weiß jemand Rat? Wär echt klasse!

Code:
/*
 * Swing version.
 */

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class MovingLabels extends JFrame
                          implements ActionListener {
    int frameNumber = -1;
    Timer timer;
    boolean frozen = false;

    JLayeredPane layeredPane;
    JLabel bgLabel, fgLabel, galLabel, mozLabel, conLabel, linLabel, logLabel, t1Label, t2Label, t3Label, picLabel, urlLabel;
    int fgHeight, fgWidth;
    int bgHeight, bgWidth;
    static String mozFile = "mozilla_interface.gif";
    static String fgFile = "home_small.gif";
    static String bgFile = "background.gif";
    static String galFile = "gallery_small.gif";
    static String conFile = "contact_small.gif";
    static String linFile = "links_small.gif";
    static String logFile = "logo.gif";
    static String t1File = "text1_small.gif";
    static String t2File = "text2_small.gif";
    static String picFile = "picture.gif";
    static String urlFile = "http.gif";



    void buildUI(Container container, Image bgImage, Image fgImage, Image galImage, Image mozImage, Image conImage, Image linImage, Image logImage, Image t1Image, Image t2Image, Image picImage, Image urlImage) {
        final ImageIcon bgIcon = new ImageIcon(bgImage);
        final ImageIcon fgIcon = new ImageIcon(fgImage);
        final ImageIcon galIcon = new ImageIcon(galImage);
        final ImageIcon mozIcon = new ImageIcon(mozImage);
        final ImageIcon conIcon = new ImageIcon(conImage);
        final ImageIcon linIcon = new ImageIcon(linImage);
        final ImageIcon logIcon = new ImageIcon(logImage);
        final ImageIcon t1Icon = new ImageIcon(t1Image);
        final ImageIcon t2Icon = new ImageIcon(t2Image);
        final ImageIcon picIcon = new ImageIcon(picImage);
        final ImageIcon urlIcon = new ImageIcon(urlImage);

        bgWidth = bgIcon.getIconWidth();
        bgHeight = bgIcon.getIconHeight();
        fgWidth = fgIcon.getIconWidth();
        fgHeight = fgIcon.getIconHeight();

        //Set up a timer that calls this object's action handler
        timer = new Timer(100, this); //delay = 100 ms
        timer.setInitialDelay(0);
        timer.setCoalesce(true);

        //Create a label to display the background image.
        bgLabel = new JLabel(bgIcon);
        bgLabel.setOpaque(true);
        bgLabel.setBounds(0, 0, bgWidth, bgHeight);

        //Create a label to display the foreground image.
        fgLabel = new JLabel(fgIcon);
        fgLabel.setBounds(-fgWidth, -fgHeight, fgWidth, fgHeight);

        galLabel = new JLabel(galIcon);

        mozLabel = new JLabel(mozIcon);

        conLabel = new JLabel(conIcon);

        linLabel = new JLabel(linIcon);

        logLabel = new JLabel(logIcon);

        t1Label = new JLabel(t1Icon);

        t2Label = new JLabel(t2Icon);

        t3Label = new JLabel(t1Icon);

        picLabel = new JLabel(picIcon);

        urlLabel = new JLabel(urlIcon);


        //Create the layered pane to hold the labels.
        layeredPane = new JLayeredPane();
        layeredPane.setPreferredSize(
                       new Dimension(bgWidth, bgHeight));
        //layeredPane.addMouseListener(new MouseAdapter() {
        t1Label.addMouseListener(new MouseAdapter() {
            public void mouseEntered(MouseEvent e) {
               //if (frozen) {
                //    frozen = false;
                   System.out.println("I'm in!!");
                   startAnimation();
                //} else {
                 //   frozen = true;
                 //   stopAnimation();
                //}
            }
            public void mouseExited(MouseEvent e) {
               //if (frozen) {
                //    frozen = false;
                   System.out.println("I'm out!!");
                   startAnimation();
                //} else {
                 //   frozen = true;
                 //   stopAnimation();
                //}
            }
        });

        layeredPane.add(bgLabel, new Integer(0));  //low layer
        layeredPane.add(mozLabel, new Integer(1));  //high layer
        layeredPane.add(logLabel, new Integer(2));  //high layer
        layeredPane.add(fgLabel, new Integer(3));  //high layer
        layeredPane.add(galLabel, new Integer(4));  //high layer
        layeredPane.add(conLabel, new Integer(5));  //high layer
        layeredPane.add(linLabel, new Integer(6));  //high layer
        layeredPane.add(t1Label, new Integer(7));  //high layer
        layeredPane.add(t2Label, new Integer(8));  //high layer
        layeredPane.add(t3Label, new Integer(9));  //high layer
        layeredPane.add(picLabel, new Integer(10));  //high layer
        layeredPane.add(urlLabel, new Integer(11));  //high layer

        galLabel.setBounds(400,140,90,43);
        fgLabel.setBounds(300,140,90,43);
        mozLabel.setBounds(-2,0,1024,57);
        conLabel.setBounds(500,140,90,43);
        linLabel.setBounds(600,140,90,43);
        logLabel.setBounds(10,65,123,68);
        t1Label.setBounds(250,200,487,156);
        t2Label.setBounds(250,360,231,172);
        t3Label.setBounds(250,536,487,156);
        picLabel.setBounds(485,360,164,175);
        urlLabel.setBounds(245,698,193,37);
        //fgLabel.setLocation(50,100);
        container.add(layeredPane, BorderLayout.CENTER);
    }

    //Invoked by the applet browser only.
    public void start() {
        startAnimation();
    }

    //Invoked by the applet browser only.
    public void stop() {
        stopAnimation();
    }

    public synchronized void startAnimation() {
      
        t1File = "text1_large.gif";
        Image t1Image = Toolkit.getDefaultToolkit().getImage(t1File);
        ImageIcon t1Icon = new ImageIcon(t1Image);
        t1Label = new JLabel(t1Icon);
        this.layeredPane.add(t1Label, new Integer[7]);

    }

    public synchronized void stopAnimation() {
        //Stop the animating thread.
        if (timer.isRunning()) {
            timer.stop();
        }
    }

    public void actionPerformed(ActionEvent e) {
        //Advance animation frame.
        frameNumber++;

        //Display it.
        //fgLabel.setLocation(50,50);
                /*
            ((frameNumber*5)
             % (fgWidth + bgWidth))
            - fgWidth,
            (bgHeight - fgHeight)/2);  */
    }

    //Invoked only when run as an application.
    public static void main(String[] args) {
        Image bgImage = Toolkit.getDefaultToolkit().getImage(MovingLabels.bgFile);
        Image fgImage = Toolkit.getDefaultToolkit().getImage(MovingLabels.fgFile);
        Image galImage = Toolkit.getDefaultToolkit().getImage(MovingLabels.galFile);
        Image mozImage = Toolkit.getDefaultToolkit().getImage(MovingLabels.mozFile);
        Image conImage = Toolkit.getDefaultToolkit().getImage(MovingLabels.conFile);
        Image linImage = Toolkit.getDefaultToolkit().getImage(MovingLabels.linFile);
        Image logImage = Toolkit.getDefaultToolkit().getImage(MovingLabels.logFile);
        Image t1Image = Toolkit.getDefaultToolkit().getImage(MovingLabels.t1File);
        Image t2Image = Toolkit.getDefaultToolkit().getImage(MovingLabels.t2File);
        Image picImage = Toolkit.getDefaultToolkit().getImage(MovingLabels.picFile);
        Image urlImage = Toolkit.getDefaultToolkit().getImage(MovingLabels.urlFile);

        final MovingLabels movingLabels = new MovingLabels();
        JFrame f = new JFrame("MovingLabels");
        f.addWindowListener(new WindowAdapter() {
            public void windowIconified(WindowEvent e) {
                movingLabels.stopAnimation();
            }
            public void windowDeiconified(WindowEvent e) {
                movingLabels.startAnimation();
            }
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
        movingLabels.buildUI(f.getContentPane(), bgImage, fgImage, galImage, mozImage, conImage, linImage, logImage, t1Image, t2Image, picImage, urlImage);
        f.setSize(1024, 768);
        f.setVisible(true);
        //movingLabels.startAnimation();
    }
}


Vielen Dank!

Wassim
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Zwei Bilder übereinander legen AWT, Swing, JavaFX & SWT 1
MiMa Fonts, Icons, Bilder in JavaFX Anwendung AWT, Swing, JavaFX & SWT 5
F Bilder zu ausführbarer Jar-Datei hinzufügen AWT, Swing, JavaFX & SWT 5
G JPanel per Drag and Drop JButtons und Bilder ablegen AWT, Swing, JavaFX & SWT 1
G JPanel mit JButtons und Bilder AWT, Swing, JavaFX & SWT 5
Linjutsu Den Inhalten aus einer ArrayList Bilder zuweisen (Kartenspiel) AWT, Swing, JavaFX & SWT 8
M Swing Bilder in Swing anzeigen AWT, Swing, JavaFX & SWT 9
S AffineTranformation Bilder verschwinden von Anzeige bei Pan, Zoom AWT, Swing, JavaFX & SWT 6
G Bilder in javafx Project AWT, Swing, JavaFX & SWT 11
N Bilder auf Button einfügen und mehrmals ändern (ein Button, mehrere ActionListener) AWT, Swing, JavaFX & SWT 2
N eclipse Java, bilder benutzten Funktioniert nicht AWT, Swing, JavaFX & SWT 6
Kirby.exe Bilder in GUI einfügen AWT, Swing, JavaFX & SWT 8
T Bilder bei einem JFrame einfügen AWT, Swing, JavaFX & SWT 4
K JLabel mit Bilder im nicht initialisierten JPanel hinzufügen AWT, Swing, JavaFX & SWT 5
L Bilder werden in exportierter Datei nicht geladen AWT, Swing, JavaFX & SWT 6
C Bilder so einbinden, dass sie sich ändern AWT, Swing, JavaFX & SWT 6
J Bilder aus dem SceneBuilder werden in der Jar nicht dargestellt AWT, Swing, JavaFX & SWT 4
TheWhiteShadow JavaFX Bilder werden ungewollt Skaliert AWT, Swing, JavaFX & SWT 1
B JavaFX Bilder in einem Gewissen bereich halten AWT, Swing, JavaFX & SWT 1
J Bilder proportional verkleiner AWT, Swing, JavaFX & SWT 12
E Bilder skalieren AWT, Swing, JavaFX & SWT 4
DaCrazyJavaExpert Swing Bilder überlagern AWT, Swing, JavaFX & SWT 19
A Bilder als Hintergrund AWT, Swing, JavaFX & SWT 2
@SupressWarnings() JavaFX Bilder in executable jar laden AWT, Swing, JavaFX & SWT 5
Sugan JavaFX Bilder drucken AWT, Swing, JavaFX & SWT 0
K JPanel Bilder bei Windows nicht darstellbar AWT, Swing, JavaFX & SWT 6
Sugan Java FX Verzeichnisüberwachung -> Bilder auf GUI anzeigen AWT, Swing, JavaFX & SWT 4
E AWT Bilder als "Array" abspeichern. AWT, Swing, JavaFX & SWT 4
MrSnake Bilder aus Unterordner einfügen AWT, Swing, JavaFX & SWT 2
I 2D-Grafik Bilder Eingefügt, button jetzt im Hintergrund AWT, Swing, JavaFX & SWT 2
C SWT Treeview mit Bilder im Label verändert Expanded Icon AWT, Swing, JavaFX & SWT 1
M Swing JTextPane, Bilder und Text-flow AWT, Swing, JavaFX & SWT 2
A Mit dem Scene Builder eine Collage erstellen (Bilder beziehen aus Flickr) AWT, Swing, JavaFX & SWT 1
thet1983 JTable Bilder AWT, Swing, JavaFX & SWT 6
GenerationLost Bilder an bestimmten Platz einfügen/Objekte visualisieren AWT, Swing, JavaFX & SWT 1
F Bilder in jFrame einfügen AWT, Swing, JavaFX & SWT 3
J Bilder als Variable an einem Objekt speichern AWT, Swing, JavaFX & SWT 3
I Swing Bilder werden nach Export nicht angezeigt AWT, Swing, JavaFX & SWT 1
D 2D-Grafik Bilder anzeigen AWT, Swing, JavaFX & SWT 4
J Bilder auf JPanel (im JScrollPane) nacheinander laden AWT, Swing, JavaFX & SWT 0
vodkaz JFrame,Bilder und Zeitverzögerung AWT, Swing, JavaFX & SWT 2
A Swing Bilder werden nicht angezeigt AWT, Swing, JavaFX & SWT 3
I SWT Bilder, bzw. ein einzelnes Bild AWT, Swing, JavaFX & SWT 6
M Bilder zeichnen, NullPointer Exception AWT, Swing, JavaFX & SWT 3
Xbody 2D-Grafik JavaFX Bilder transformieren AWT, Swing, JavaFX & SWT 2
C 2D-Grafik Steganographie - Verschlüsselung von Dateien in Bildern - Bilder zeigen schwarze Rechtecke AWT, Swing, JavaFX & SWT 13
P Durch Bilder Scrollen AWT, Swing, JavaFX & SWT 2
F Bilder werden nicht in's Array geladen AWT, Swing, JavaFX & SWT 4
K Bilder übereinanderlegen AWT, Swing, JavaFX & SWT 11
windl Querstreifen beim Bilder malen und anpassen an neue CPU AWT, Swing, JavaFX & SWT 12
V Fertige Komponente zum Anzeigen mehrerer Bilder AWT, Swing, JavaFX & SWT 5
Karuka 2D-Grafik Bilder in GridLayout einfügen AWT, Swing, JavaFX & SWT 7
J Bilder in ausführbare jar einbinden AWT, Swing, JavaFX & SWT 7
J Swing Bilder anzeigen in Gridlayout AWT, Swing, JavaFX & SWT 11
H 2D-Grafik Bilder laden ist nicht zuverlässig AWT, Swing, JavaFX & SWT 3
F Bilder ineinander kopieren AWT, Swing, JavaFX & SWT 3
P Bilder verkleinern AWT, Swing, JavaFX & SWT 2
C SWT Mehrere Bilder in GUI laden AWT, Swing, JavaFX & SWT 5
Furtano AWT Skalierung mehrerer Bilder / Histogramme im Fenster AWT, Swing, JavaFX & SWT 4
Furtano AWT mehrere Bilder in einen Frame zeichnen + Layout Manager AWT, Swing, JavaFX & SWT 10
T 2D-Grafik Statisches Hintergrundbild, dynamische Bilder drüber AWT, Swing, JavaFX & SWT 2
L [SWT] Daten und Bilder drucken AWT, Swing, JavaFX & SWT 2
S Flickr Bilder in Gui Oberfläche AWT, Swing, JavaFX & SWT 21
L Bilder im JPanel als Hintergrund - Swing AWT, Swing, JavaFX & SWT 2
K Bilder nacheinander einfügen AWT, Swing, JavaFX & SWT 3
H Bilder auf Buttons per Klick tauschen ( Puzzle ) AWT, Swing, JavaFX & SWT 8
H Bilder in Array zufällig anordnen AWT, Swing, JavaFX & SWT 4
P 2D-Grafik Viele Bilder zu einem Video AWT, Swing, JavaFX & SWT 3
J Vergleicher zweier Bilder AWT, Swing, JavaFX & SWT 2
C zwei Bilder nacheinander anzeigen AWT, Swing, JavaFX & SWT 2
L Swing Bilder über andere Bilder laden AWT, Swing, JavaFX & SWT 3
J Bilder überlappen AWT, Swing, JavaFX & SWT 18
P Bilder werden nach Änderung nicht angezeigt AWT, Swing, JavaFX & SWT 15
3 2D-Grafik Rechtecke auf Bilder legen und auslesen AWT, Swing, JavaFX & SWT 4
M Mehrere Bilder auf einmal anzeigen AWT, Swing, JavaFX & SWT 9
P Swing html mit bilder drin AWT, Swing, JavaFX & SWT 12
F Nicht alle Bilder werden angezeigt AWT, Swing, JavaFX & SWT 2
E Bilder auf JFrame AWT, Swing, JavaFX & SWT 7
R Bilder über URL einfügen AWT, Swing, JavaFX & SWT 4
F Applet zeigt Bilder nicht an AWT, Swing, JavaFX & SWT 5
M FileChooser Bilder auswählen AWT, Swing, JavaFX & SWT 8
G Swing Bilder zeichnen AWT, Swing, JavaFX & SWT 28
L Swing Bilder im Icons-Ordner AWT, Swing, JavaFX & SWT 4
U Bilder in Jar werden nicht gefunden AWT, Swing, JavaFX & SWT 5
S SWT Canvas: Flackernde Bilder AWT, Swing, JavaFX & SWT 3
A Bilder vergleichen AWT, Swing, JavaFX & SWT 4
E Swing JTextPane Inhalt(Text und Bilder) als HTML text bekommen AWT, Swing, JavaFX & SWT 3
E AWT Bilder und Java AWT, Swing, JavaFX & SWT 11
P Bilder einfügen AWT, Swing, JavaFX & SWT 4
D Swing JEditorPane mit HTML aber ohne Bilder AWT, Swing, JavaFX & SWT 3
S Swing Kleine Bilder in Panel einfügen AWT, Swing, JavaFX & SWT 13
A AWT Bilder als Link verwenden? AWT, Swing, JavaFX & SWT 11
T SWT Wie Bilder aus JAR-Dateien einbinden? AWT, Swing, JavaFX & SWT 12
S Bilder aus der Google Book Search API auslesen AWT, Swing, JavaFX & SWT 3
J Bilder in JScrollPane zentrieren AWT, Swing, JavaFX & SWT 5
M Bilder in einem Textfeld darstellen AWT, Swing, JavaFX & SWT 2
N Bilder aus Infos generieren lassen. Welches Framework? AWT, Swing, JavaFX & SWT 8
A SWT Bilder resizen AWT, Swing, JavaFX & SWT 9
A Swing Bilder in JFrame einfügen AWT, Swing, JavaFX & SWT 2
Cloud Einige Bilder werden nicht geladen AWT, Swing, JavaFX & SWT 11

Ähnliche Java Themen


Oben