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:
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;
}
}
}
}