Servus, ich habe das Problem, dass ich eine Methode gerne erst nach dem Ablauf der Spielzeit ausführen würde, dazu müsste ich aber das JPanel reloaden, weiß aber nicht wie.
Es geht um die letzte If-Abfrage. Wie kann ich es machen, dass das Panel neu geladen wird wenn der Timer abgelaufen ist und ingame auf false gestzt wurde?
Hier noch die Timer Klasse:
Bin für jede Hilfe dankbar!
Java:
public Panel() {
setSize(1000,743); //Setze die Größe des JPanels
setLayout(null); //Setze das Layout des JPanels
setVisible(true); //Mache das JPanel sichtbar
initializeIL(); //Führe die Methode aus, erzeuge Bilder
repaint(); //Zeichne das JPanel neu
newGame = new JButton("Neues Spiel"); //Erstelle newGame mit Text
newGame.setFont(new Font("Arial", Font.BOLD, 20)); //Ändere Schrifdesign
newGame.addActionListener(new ActionListener() { //Fühe newGame einen ActionListner hinzz
@Override
public void actionPerformed(ActionEvent arg0) {
new SetDefault(Main.panel); //Setze das Spiel zurück
newGame.setVisible(false); //Mache den Button wieder unsichtbar
}
});
newGame.setBounds(400,570,200,50); //Setze Position& Größe
newGame.setVisible(false); //Setze die Sichtbarkeit
add(newGame); //Füge den Button dem Panel hinzu
try { new Stats(); } catch (IOException e) { e.printStackTrace(); } //Lese die Stats ein
if(ingame == false) {
sc = new StatsChange(punkte, "");
}
}
Hier noch die Timer Klasse:
Java:
package Animations;
import java.awt.Color;
import java.awt.Font;
import java.util.*;
import java.util.Timer;
import javax.swing.*;
import Gui.Panel;
public class GameTimer {
private Panel p;
private Timer timer;
private static JLabel clock;
public int sekunde;
public GameTimer(Panel panel, int sek) {
sekunde = sek;
p = panel;
clock = new JLabel();
clock.setBounds(10,10,200,40);
clock.setFont(new Font("Arial",Font.BOLD,25));
clock.setVisible(true);
p.add(clock);
timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
if(sekunde >= 60) {
int sek = sekunde-60;
if(sek < 10) {
clock.setText("1:0"+ sek);
} else {
clock.setText("1:"+ sek);
}
} else if(sekunde < 60 && sekunde >= 0) {
if(sekunde < 10) {
clock.setText("0:0"+ sekunde);
} else {
clock.setText("0:"+ sekunde);
}
} else if(sekunde == -1) {
clock.setForeground(new Color(204,0,0));
clock.setText("Zeit abgelaufen");
timer.cancel();
p.setIngame(false);
}
sekunde--;
if(sekunde < 4 ) {
new Sound("sounds/beep.wav");
}
}
});
}
}, 0, 1000);
}
public static void invisibleClock() {
clock.setVisible(false);
}
}