Bilder im GUI einfügen

HexaDeff

Mitglied
Hi,

also ich hatte vor ein paar Bilder im GUI anzeigen zu lassen, habe aber ein kleines Problem bei der richtigen Darstellung.

Also ich habe eine kleine ArrayList<Integer> mit Zahlen erstellt, die mittels Collections.shuffle() gemischt wird. Anschließend wird die erste Zahl mittels remove(0) entfernt, was durch einen Button-Click ausgelöst. Zuvor wurde ein switch-statement platziert, welches jeder Zahl ein Bild zuordnet. Also wird eine Zahl entfernt, dieser Zahl wird ein Bild zugeordnet, was anschließend im GUI angezeigt werden soll.

Nun habe ich aber ein Problem. Ich möchte, dass das aller erste Bild an einer bestimmten Position angezeigt wird. Das zweite Bild soll dann direkt daneben angezeigt werden. Und das dritte Bild wiederum neben das zweite und so weiter. Ich weiß aber leider nicht, wie ich das realisieren. Bisher musste ich jedem Bild eine Position mittels setBound zuordnen. Allerdings wäre das ja nicht so wie von mir gewünscht.

PS: Ich verwende ein absolutes Layout, da ich sowieso ein von der Größe festgelegtes Fenster verwende und außerdem alle Objekte leichter platziert werden können.

Der Code sieht folgendermaßen aus:

Java:
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Collections;
 
public class gui3{
     
    JFrame frame = new JFrame();
    JPanel panel = new JPanel();
    JButton button1 = new JButton("Show pictures");
    JLabel label1 = new JLabel();
    JLabel label2 = new JLabel();
    JLabel label3 = new JLabel();
     
    public gui3(){      
        button1.setBounds(6, 6, 117, 29);
    //      label1.setBounds(479, 223, 100, 160);              Positionen sind vorher festgelegt, aber das
    //      label2.setBounds(452, 249, 100, 160);              ist nicht ganz in meinem Sinne, da die Bilder 
    //      label3.setBounds(509, 265, 100, 160);              je nach ihrer festen Position angezeigt werden
         
        panel.setLayout(null);
        panel.add(button1);
        panel.add(label1);
        panel.add(label2);
        panel.add(label3);
         
        button1.addActionListener(new buttonhandler());
 
        frame.setTitle("Test");
        frame.setSize(800, 600);
        frame.add(panel);
        frame.setResizable(false);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
     
    public class buttonhandler implements ActionListener{
 
        public void actionPerformed(ActionEvent e) {
            ArrayList<Integer> pics = new ArrayList<Integer>();
             
            for(int i = 0; i < 3; i++){
                pics.add(i);
            }
             
            Collections.shuffle(pics);
            System.out.println(pics);
             
            switch(pics.remove(0)){
            case 0:
                label1.setIcon(new ImageIcon("Pic1.jpg"));
                break;
            case 1:
                label2.setIcon(new ImageIcon("Pic2.jpg"));
                break;
            case 2:
                label3.setIcon(new ImageIcon("Pic3.jpg"));  
                break;
            }
        }
         
 
    }
}
 

bERt0r

Top Contributor
PS: Ich verwende ein absolutes Layout, da ich sowieso ein von der Größe festgelegtes Fenster verwende und außerdem alle Objekte leichter platziert werden können.
Blödsinn: Layoutmanager wurden gemacht um Objekte leichter platzieren zu können. Wenn du keinen verwenden willst, hast dus eben schwerer.
Dein Vorhaben lässt sich zum Beispiel mit einem FlowLayout ganz schnell und einfach lösen: Jedes Icon in ein Label und nach der Reihe adden.
 

Fab1

Top Contributor
also du hast ein Null-Layout, willst aber keine feste Position vergeben?

Am besten wärst du mit einem Layoutmanager aufgehoben, welcher dir die Bilder nach einander einfügt. Evtl. FlowLayout o.ä.
 

HexaDeff

Mitglied
Das Flowlayout zu verwenden wäre eine Möglichkeit aber irgendwie ist mir das Platzieren der Objekte meist unpraktikabel. Und wäre es denn auch möglich die Bilder beispielsweise überlappend mit dem Flowlayout darzustellen? Also zum Beispiel wären die Koordinaten des ersten Bildes x=400 und y=400. Und die des zweiten Bildes wär..en dann vielleicht x=420 und y=420. Mit dem absoluten Layout ist dies logischerweise möglich. Allerdings weiss ich nicht, wie ich das variable setzen kann wie im Ausgangsposting beschrieben.
 

Kakulukiam21

Aktives Mitglied
Ich würde es mal mit dem LayeredPane() versuchen, das hat bei mir wunderbar geholfen. So konnte ich Objekte überlappend anlegen.

Aber wenn deine Objekte nebeneinander sollen wieso brauchst du dann eine Funktion, die Bilder übereinander legen kann?
 

HexaDeff

Mitglied
Ich würde es mal mit dem LayeredPane() versuchen, das hat bei mir wunderbar geholfen. So konnte ich Objekte überlappend anlegen.

Aber wenn deine Objekte nebeneinander sollen wieso brauchst du dann eine Funktion, die Bilder übereinander legen kann?

Es ist lediglich eine alternative Darstellung zu den nebeneinander liegenden Bildern. Wie funktioniert es mit dem LayeredPane denn genau? Müssen die Bilder einfach nur wie beim "normalen" FlowLayout nacheinander geadded werden oder gibt es da auch absolute Positionen sprich Bounds?
 

HexaDeff

Mitglied
Ich habe es nun erstmal mit dem Flowlayout gemacht, bevor ich es mit dem LayeredPane versuche. Allerdings gibt es schon jetzt einige Problem: Immer wenn ich auf meinen Button zur Ausgabe des nächsten Bildes klicke, erscheinen die Bilder immer in anderer Reihenfolge. Beispiel: Ich klicke auf den Button, Bild 1 erscheint. Ich klicke erneut auf den Button, Bild 3 erscheint direkt neben Bild 1. Ich klicke erneut auf den Button, Bild 2 erscheint zwischen Bild 1 und Bild 3. Allerdings will ich, dass Bild 2 nach Bild 3 erscheint, also es folgende Reihenfolge vorliegt: 1, 3, 2. Und nicht 1, 2, 3, wie es hier der Fall ist.

Wie kann ich das verhindern? Ich sehe das Problem leider nicht und kann es mir auch nicht erklären.

Hier der Code:
Java:
import java.awt.*; 

public class flowlayout { 
	int value;
	
	ArrayList<Integer> deck;
	
	JFrame frame = new JFrame();
	JPanel panel = new JPanel();
	JButton button1 = new JButton("Show pictures");
	
	JLabel label0 = new JLabel();
	JLabel label1 = new JLabel();
	JLabel label2 = new JLabel();
	JLabel label3 = new JLabel();
	JLabel label4 = new JLabel();
	JLabel label5 = new JLabel();
	JLabel label6 = new JLabel();
	JLabel label7 = new JLabel();
	JLabel label8 = new JLabel();
	JLabel label9 = new JLabel();
	JLabel label10 = new JLabel();

	   public static void main(String args[]) { 
		      new flowlayout(); 
		   } 
	   
   public flowlayout() { 
	    deck = new ArrayList<Integer>();

		for(int i = 0; i < 52; i++){
			deck.add(i);
		}
		
		Collections.shuffle(deck);
		
        panel.setLayout(new FlowLayout(FlowLayout.CENTER));
	   	panel.add(button1);
	   	panel.add(label0);
	   	panel.add(label1);
	   	panel.add(label2);
	   	panel.add(label3);
	   	panel.add(label4);
	   	panel.add(label5);
	   	panel.add(label6);
	   	panel.add(label7);
	   	panel.add(label8);
	   	panel.add(label9);
	   	panel.add(label10);

	   	button1.addActionListener(new buttonhandler());
	   
		frame.setTitle("Test");
		frame.setSize(800, 600);
		frame.getContentPane().add(panel);
		frame.setResizable(false);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);
   }

   public class buttonhandler implements ActionListener{

	public void actionPerformed(ActionEvent e) {
		if(e.getSource() == button1){

		       switch (deck.remove(0)) {
	            case 0:
	            	label0.setIcon(new ImageIcon("PIC"));
	            	panel.add(label0);
	                break;
	            case 1:
	            	label1.setIcon(new ImageIcon("PIC"));
	            	panel.add(label1);
	                break;
	            case 2:
	            	label2.setIcon(new ImageIcon("PIC"));
	            	panel.add(label2);
	                break;
	            case 3:
	            	label3.setIcon(new ImageIcon("PIC"));
	            	panel.add(label3);
	                break;
	            case 4:
	            	label4.setIcon(new ImageIcon("PIC"));
	                break;
	            case 5:
	            	label5.setIcon(new ImageIcon("PIC"));
	                break;
	            case 6:
	            	label6.setIcon(new ImageIcon("PIC"));
	                break;
	            case 7:
	            	label7.setIcon(new ImageIcon("PIC"));
	                break;
	            case 8:
	            	label8.setIcon(new ImageIcon("PIC"));
	                break;
	            case 9:
	            	label9.setIcon(new ImageIcon("PIC"));
	                break;
	            case 10:
	            	label10.setIcon(new ImageIcon("PIC"));
	                break;
	        }
	    }
	} 
  }
}
 

HexaDeff

Mitglied
Und wie kann man das dann beheben? Ich meine versucht zu haben, die labels in den einzelnen cases des switch statements zu adden, aber da wurde mir leider gar nichts angezeigt.
 

bERt0r

Top Contributor
Die labels in deiner gewünschten Reihenfolge adden?
Wenn du 1 3 2 haben willst, darfst du nicht erst 1, dann 2, dann 3 adden; sondern erst 1, dann 3, dann 2. Das ist echt so banal, ich weiß gar nicht wo das problem ist.
 

HexaDeff

Mitglied
Das war nur ein Beispiel mit der Reihenfolge. Mehrere Zahlen sind in einer ArrayList gespeichert. Diese werden anschließend gemischt. Nun wird immer die erste Zahl betrachtet, dann aus der Liste entfernt und dann im GUI das zugehörige Bild angezeigt. Daher kann es immer zu verschiedenen Kombinationen kommen: 1,2,3; 1,3,2; 2,3,1; 3,1,2. Nun sollen die Bilder aber nacheinander angezeigt werden, unabhängig ihrer Zahl und dementsprechend unabhängig von ihrem case. Und da kann ich logischerweise NICHT einfach die Reihenfolge der Labels vertauschen! Immerhin kenne ich die Reihenfolge, die per Zufall generiert wird, auch NICHT!
 

HexaDeff

Mitglied
Habe es mittlerweile geschafft. Mein Fehler war, dass ich die Label erst nach der Angabe ihres Pfades geadded habe, und nicht davor, weshalb man sie nicht sehen konnte.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
x-tshainge Java Bilder einfügen Java Basics - Anfänger-Themen 1
E HILFE Projekt für die Schule--> Bilder einfügen Java Basics - Anfänger-Themen 9
D 2 Fragen: Position ändern vs. LayoutManager / Bilder einfügen im Vordergrund Java Basics - Anfänger-Themen 3
B GUI-Bilder einfügen Java Basics - Anfänger-Themen 40
D Bilder einfügen Java Basics - Anfänger-Themen 8
W Bilder einfügen? Java Basics - Anfänger-Themen 2
hdi Bilder jar-kompatibel einfügen Java Basics - Anfänger-Themen 5
D Bilder einfügen Java Basics - Anfänger-Themen 14
G Bilder in den Hintergrund eines Applets einfügen Java Basics - Anfänger-Themen 16
H Bilder in Panels einfügen? Java Basics - Anfänger-Themen 4
G Bilder in eine Applikation einfügen Java Basics - Anfänger-Themen 9
Butzibu Image Loader lädt nicht alle Bilder: Java Basics - Anfänger-Themen 4
Schniffi Nur bestimmte Bilder aus einem Array auf Image Button anzeigen lassen Java Basics - Anfänger-Themen 3
S Aktuell beste Methode um zwei Bilder zu vergleichen..? Java Basics - Anfänger-Themen 1
W Java in Exe Datei umgewandelt, Ressourcen fehlen (Bilder und Audiodateien) Java Basics - Anfänger-Themen 1
B Nach dem kompilieren werden Bilder nicht mehr gefunden Java Basics - Anfänger-Themen 10
C Erste Schritte Bilder nach Export anzeigen Java Basics - Anfänger-Themen 0
B HTML File einlesen inkl. Bilder? Java Basics - Anfänger-Themen 2
S Bilder über Socket Senden Java Basics - Anfänger-Themen 1
S Bilder in .jar Datei laden Java Basics - Anfänger-Themen 10
S Bilder zoomen Java Basics - Anfänger-Themen 0
S Kann keine Bilder laden? Java Basics - Anfänger-Themen 9
CptK Interface Bilder über Bildschirm bewegen, bis der Abstand zum vorherigen zu groß wird Java Basics - Anfänger-Themen 13
CptK Interface Bilder mit Graphics g zeichnen Java Basics - Anfänger-Themen 7
I Projekt als .jar Datei speichern - Bilder werden nicht mehr angezeigt Java Basics - Anfänger-Themen 4
B Auslesen von PDF / Bilder Java Basics - Anfänger-Themen 5
DaCrazyJavaExpert Bilder werden nicht angezeigt! Java Basics - Anfänger-Themen 6
L Verschiedene Bilder per Knopfdruck anzeigen lassen Java Basics - Anfänger-Themen 17
M Bilder in .Jar exportieren Java Basics - Anfänger-Themen 2
T Bilder in ausführbarer Jar Java Basics - Anfänger-Themen 11
F 2 wechselnde Bilder Java Basics - Anfänger-Themen 4
D Verzögerung des Erscheinens der Bilder Java Basics - Anfänger-Themen 5
L BufferdImage schwarzes Bild nach zusammenfügen zweier Bilder Java Basics - Anfänger-Themen 8
F Bilder aus jar einlesen Java Basics - Anfänger-Themen 10
J Bilder in Labels aktualisieren Java Basics - Anfänger-Themen 2
T jpeg Bilder zoomen.. Java Basics - Anfänger-Themen 2
C Bilder von Festplatte in Programm hochladen Java Basics - Anfänger-Themen 6
S Wo speicher ich bilder und sounds ab? Java Basics - Anfänger-Themen 4
C Threads Threaded Bilder bearbeiten Java Basics - Anfänger-Themen 8
K Bilder mit Eclipse exportieren Java Basics - Anfänger-Themen 1
J Slideshow zeigt bilder nicht an Java Basics - Anfänger-Themen 3
R Bilder aus Array als anklickbare Objekte Java Basics - Anfänger-Themen 3
K Export nach Jar mit Bilder Java Basics - Anfänger-Themen 2
L Wie bette ich Bilder in eine .jar ein? Java Basics - Anfänger-Themen 4
C Pfad für Bilder angeben Java Basics - Anfänger-Themen 11
B Bilder laden und drauf zugreifen[Eclipse] Java Basics - Anfänger-Themen 9
E ImageJ mehrere Bilder hintereinander bearteiten Java Basics - Anfänger-Themen 2
H Bilder ohne Verlust speichern Java Basics - Anfänger-Themen 2
J Ladebalken anzeigen während Bilder geladen werden Java Basics - Anfänger-Themen 2
R Bilder positionieren Java Basics - Anfänger-Themen 5
D Erstellte Jar datei zeigt keine Bilder an Java Basics - Anfänger-Themen 5
4 4kb bilder Java Basics - Anfänger-Themen 5
Q Pfadangabe für zu speichernde Bilder Java Basics - Anfänger-Themen 2
B Bilder speichern (jpg, gif, jpg) Java Basics - Anfänger-Themen 4
S Bilder einladen Java Basics - Anfänger-Themen 26
B Aus einem Eclipse Projekt eine .jar - keine Bilder drin Java Basics - Anfänger-Themen 7
G Bilder in Jar anzeigen lassen Java Basics - Anfänger-Themen 23
T Bilder in der jar-datei Java Basics - Anfänger-Themen 10
H Zahlen Bilder zuordnen möglich? Java Basics - Anfänger-Themen 4
K BufferedImage, Bilder laden Java Basics - Anfänger-Themen 15
J Bilder von Objekten Java Basics - Anfänger-Themen 3
A Bilder in Eclipse speichern Java Basics - Anfänger-Themen 7
J Mit JS, Text und Bilder von Webseite verändern... Java Basics - Anfänger-Themen 10
S Input/Output Text und Bilder laden Java Basics - Anfänger-Themen 5
T Bilder werden in Jar nicht geladen Java Basics - Anfänger-Themen 10
S Java Web Start lädt keine Bilder Java Basics - Anfänger-Themen 2
T Buttons (auf denen bilder sind) random vertauschen Java Basics - Anfänger-Themen 11
D Bilder Laden, mit Eclipse ok, .jar nicht Java Basics - Anfänger-Themen 5
F Bilder aus .jar datei laden Java Basics - Anfänger-Themen 1
M Applet soll Bilder aus Ordner lesen Java Basics - Anfänger-Themen 9
T Transparente Bilder mit Graphics zeichnen Java Basics - Anfänger-Themen 17
F Bilder enfügen und Bewegen Java Basics - Anfänger-Themen 6
I Drehbare bilder in 3D Java Basics - Anfänger-Themen 4
M Bilder laden und zeichnen Java Basics - Anfänger-Themen 3
T JTextPane - setText kein kein neuladen der Bilder? Java Basics - Anfänger-Themen 8
A Bilder in Eclipse Java Basics - Anfänger-Themen 8
xehpuk Ordner "Eigene Bilder" ansteuern Java Basics - Anfänger-Themen 3
N Bilder Objekten zuweisen Java Basics - Anfänger-Themen 2
J Bilder auf Bilder zeichnen Java Basics - Anfänger-Themen 8
N jar kann Bilder nicht finden(?) Java Basics - Anfänger-Themen 4
S Spiel automat -Bilder vergleichen Java Basics - Anfänger-Themen 3
R Gif Bilder flimmern Java Basics - Anfänger-Themen 10
P Signiertes JAR aber keine Bilder o0 Java Basics - Anfänger-Themen 6
S Bilder der Diashow werden in anderen Bildern angezeigt Java Basics - Anfänger-Themen 3
G Bilder aus dem Projekt Verzeichnis werden n. angezeigt Java Basics - Anfänger-Themen 7
C Bilder von Server zu Server kopieren über Webdav(Sardine) Java Basics - Anfänger-Themen 5
K Bilder "langsam" laden Java Basics - Anfänger-Themen 4
FreddyStepp Bilder zusammenfügen Java Basics - Anfänger-Themen 7
S Bilder vergleichen Java Basics - Anfänger-Themen 6
B Kann man im Thread Bilder laden? Java Basics - Anfänger-Themen 8
S Wo speichere ich Bilder für Applets (Netbeans) Java Basics - Anfänger-Themen 5
J Mehrere Bilder laden Java Basics - Anfänger-Themen 6
S Mehrere Bilder bewegen Java Basics - Anfänger-Themen 5
B Bilder zeichnen Java Basics - Anfänger-Themen 2
D Bilder in JFrame laden Java Basics - Anfänger-Themen 8
L Frage bzgl. Threads beim Bilder laden Java Basics - Anfänger-Themen 3
S Bilder in AWT Java Basics - Anfänger-Themen 7
J java applets bilder? Java Basics - Anfänger-Themen 11
manunana89 Bilder auf JFrame/beste Möglichkeit??? Java Basics - Anfänger-Themen 5
K Bilder werden nicht angeziegt !!! Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben