Der Titel is etwas unverständlich, aber was soll ich sonst schreiben? >.<
Haben ein Problem, ich will eine Uhr machen die ich mit Bildern (Digital Uhr) realisieren wollte.Zum ändern der Uhrzeit verwende ich die classe Timer die immer nach einer Minute ein Event auslöst und die Bilder nach der Uhrzeit ändern soll. Im Konstrukor füg ich schonmal das Hintergrundbild hinzu. Nach dem konstruktor, wenn der Timer läuft, kommt einfach kein Bild.
so. also wie gesagt das Hintergrundbild fügt er hinzu, dann aber nix mehr. Obwohl er die Zahlen richtig erkennet in die IF Bedingung geht, das Bild in das Label richtig einfügt aber er added es einfach nicht
Haben ein Problem, ich will eine Uhr machen die ich mit Bildern (Digital Uhr) realisieren wollte.Zum ändern der Uhrzeit verwende ich die classe Timer die immer nach einer Minute ein Event auslöst und die Bilder nach der Uhrzeit ändern soll. Im Konstrukor füg ich schonmal das Hintergrundbild hinzu. Nach dem konstruktor, wenn der Timer läuft, kommt einfach kein Bild.
Java:
public class Zeichnen extends JPanel {
private static final long serialVersionUID = 1L;
private JLabel hintergrund,stunde_1,stunde_2,minute_1,minute_2;
private Point stunde_1_pos = new Point(45, 20); // die Position für die Zahlen (Bilder)
private Point stunde_2_pos = new Point(60, 20);
private Point minute_1_pos = new Point(75, 20);
private Point minute_2_pos = new Point(90, 20);
private Dimension zahl_size = new Dimension(16,26); // größer der Bilder
public Zeichnen() {
setLayout(null);
Timer timer = new Timer(1000, new TimerActionHandler(this));
// zum testen jede sekunde ändern (damit ich auch was sehe :))
timer.start();
printImage(10, 5); //hintergrundbild das ja schomal funktioniert^^
}
public void TimerAction(ActionEvent ae) { // das ruft der Timer korrekt auf nach jeder Sekunde
Calendar rightNow = Calendar.getInstance();
int hours = rightNow.get(Calendar.HOUR_OF_DAY);
int minute = rightNow.get(Calendar.MINUTE);
printImage(hours / 10, 1); // zehnerstelle
printImage(hours % 10, 2); // einerstelle
printImage(minute / 10, 3);
printImage(minute % 10, 4);
}
public void printImage(int zahl, int pos) {// zahl = davon bekomm ich dann die Zahl als .bmp
// pos = sollte die position für die Bilder sein. Struktur:
// stunde_1 stunde_2 : minute_1 minute_2
//zb.:(1) (18) : (5) (0) = 18:50
Zahlen zahl_img = new Zahlen();
Image bild = zahl_img.getImage(zahl);
// die zwei Zeilen sind zur beschaffung von BufferdImage da
if (pos == 1) {
stunde_1 = new JLabel(new ImageIcon(bild));
stunde_1.setLocation(stunde_1_pos);
stunde_1.setSize(zahl_size);
add(stunde_1);
}else if(pos == 2){
stunde_2 = new JLabel(new ImageIcon(bild));
stunde_2.setLocation(stunde_2_pos);
stunde_2.setSize(zahl_size);
add(stunde_2);
}else if(pos == 3){
minute_1 = new JLabel(new ImageIcon(bild));
minute_1.setLocation(minute_1_pos);
minute_1.setSize(zahl_size);
add(minute_1);
}else if(pos == 4){
minute_2 = new JLabel(new ImageIcon(bild));
minute_2.setLocation(minute_2_pos);
minute_2.setSize(zahl_size);
add(minute_2);
}else if(pos == 5){ // hat nichts mit den Positionen zu tun, ist nur der Hintergrund
hintergrund = new JLabel(new ImageIcon(bild));
hintergrund.setLocation(0,0);
hintergrund.setSize(128, 68);
add(hintergrund);
}
}
}
class TimerActionHandler implements ActionListener { //hab ich in der Schule gelernt, is praktisch^^
Zeichnen cb;
public TimerActionHandler(Zeichnen cb) {
this.cb = cb;
}
@Override
public void actionPerformed(ActionEvent ae) {
cb.TimerAction(ae);
}
}
Zuletzt bearbeitet: