Moin Leute,
ich habe hier ein kleines Programm mit einem Panel für Bilder, und einem Button unten, der beim raufdrücken eins von drei Bildern auf das Panel laden soll. Er soll, tut er aber nicht.
Wenn ich direkt im GUI-Code eins der Bilder an das Bilder-Panel anknüpfe, wird es mir auch angezeigt. Wenn ich auch den Zufallsgenerator in der GUI habe, wird mir bei jedem neuen Aufmachen des Programms die App mit einem zufälligen Bild angezeigt.
Wenn ich den Zufallsgenerator in den Action-Listener-Code reinstecke (so wie im Code unten), kommt da gar nichts. Wo ist der Fehler? Ich glaube, hier liegt kein Logikfehler vor (mit anderen Objekten funktioniert dieser Code prima), sondern um einen in diesem Fall falschen Code zum Herausholen von externen Bildern. Wie mache ich das richtig?
ich habe hier ein kleines Programm mit einem Panel für Bilder, und einem Button unten, der beim raufdrücken eins von drei Bildern auf das Panel laden soll. Er soll, tut er aber nicht.
Wenn ich direkt im GUI-Code eins der Bilder an das Bilder-Panel anknüpfe, wird es mir auch angezeigt. Wenn ich auch den Zufallsgenerator in der GUI habe, wird mir bei jedem neuen Aufmachen des Programms die App mit einem zufälligen Bild angezeigt.
Wenn ich den Zufallsgenerator in den Action-Listener-Code reinstecke (so wie im Code unten), kommt da gar nichts. Wo ist der Fehler? Ich glaube, hier liegt kein Logikfehler vor (mit anderen Objekten funktioniert dieser Code prima), sondern um einen in diesem Fall falschen Code zum Herausholen von externen Bildern. Wie mache ich das richtig?
Java:
import javax.swing.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
public class randomimage {
public static void main(String[] args) {
randomimage ri = new randomimage();
ri.gui();
}//main()
JFrame Rahmen;
JPanel imageP;
JButton button;
ArrayList<JLabel> picList;
void gui(){
Rahmen = new JFrame(" random image app");
imageP = new JPanel();
imageP.setBackground(Color.red);
button = new JButton("get a new random image!");
button.setPreferredSize(new Dimension(100,100));
button.addActionListener(new buttonListener());
picList = new ArrayList<JLabel>();
JLabel pic0 = new JLabel(new ImageIcon("C:\\cl0.png"));
picList.add(pic0);
JLabel pic1 = new JLabel(new ImageIcon("C:\\cl1.png"));
picList.add(pic1);
JLabel pic2 = new JLabel(new ImageIcon("C:\\cl2.png"));
picList.add(pic2);
Rahmen.getContentPane().add(BorderLayout.CENTER, imageP);
Rahmen.getContentPane().add(BorderLayout.SOUTH, button);
Rahmen.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Rahmen.setSize(300,450);
Rahmen.setVisible(true);
}//gui()
public class buttonListener implements ActionListener{
public void actionPerformed(ActionEvent e){
int rand = (int)(Math.random()*picList.size());
JLabel randPic = picList.get(rand);
imageP.add(randPic);
Rahmen.repaint();
}}//buttonListener
}//class randomimage