Hallo,
ich möchte gernen einen Würfel erstellen. Dazu möchte ich einfach Bilder wechseln, die dann jedes mal upgedatet werden. Aber genau hier liegt mein Problem. Nur das letzte Bild wird angezeigt. Habe schon viel ausprobiert, aber irgendwie bekomme ich es nicht hin. Wie mache ich das mit Threads?
ich möchte gernen einen Würfel erstellen. Dazu möchte ich einfach Bilder wechseln, die dann jedes mal upgedatet werden. Aber genau hier liegt mein Problem. Nur das letzte Bild wird angezeigt. Habe schon viel ausprobiert, aber irgendwie bekomme ich es nicht hin. Wie mache ich das mit Threads?
Java:
import java.awt.EventQueue;
import java.awt.Image;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
public class Wuerfel extends JFrame {
private JPanel contentPane;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Wuerfel frame = new Wuerfel();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public Wuerfel() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 86, 94);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
final JLabel wuerfel_label = new JLabel("");
wuerfel_label.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
EventQueue.invokeLater(new Runnable() {
public void run() {
double neuzeit = 10;
double besch = 0.2;
double gesamt = neuzeit;
while (gesamt < 3000) {
try {
int zahl = ertragsWuerfel();
System.out.println(zahl);
wuerfel_label.setIcon(new ImageIcon(new ImageIcon("\wR"+ zahl + ".jpg").getImage().getScaledInstance(60, 60, Image.SCALE_SMOOTH)));
Thread.sleep(new Double(neuzeit).intValue());
neuzeit += neuzeit * besch;
gesamt += neuzeit;
} catch (InterruptedException e1) {
e1.printStackTrace();
}
}
}
});
}
});
contentPane.setLayout(null);
wuerfel_label.setBounds(26, 0, 60, 60);
contentPane.add(wuerfel_label);
wuerfel_label.setIcon(new ImageIcon("\wR1.jpg"));
}
// Wuerfeln
public int ertragsWuerfel() {
return (int) (Math.random() * 6 + 1);
}
}