Ich habe nie mit Timer
s vor gearbeitet, so ist mein Problem wahrscheinlich wirklich dumm. Mein Programm zeichnet einen Kreis, der rot ist und nach zufälligen Sekunden sollte der Kreis seine Farbe auf grün ändern. Ich habe gerade einen Swing-Timer erstellt, wie Sie unten im Code sehen können. Und es tritt actionPerformed()
Methode, aber es ändert sich nicht die Farbe. Könnten Sie mir helfen, mein Problem mit den Farben zu beheben?Painting in Swing Timer funktioniert nicht
Mein Code:
package igrica;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;
public class ChangingCircle implements ActionListener{
JFrame frame;
Timer timer;
Random r;
public static void main(String[] args) {
ChangingCircle gui = new ChangingCircle();
gui.go();
}
public void go() {
frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
MyPanel panel = new MyPanel();
frame.getContentPane().add(BorderLayout.CENTER, panel);
frame.setSize(300, 300);
frame.setVisible(true);
}
public void actionPerformed(ActionEvent event) {
frame.repaint();
}
class MyPanel extends JPanel {
public void paintComponent(Graphics g) {
g.setColor(Color.red);
g.fillOval(100, 100, 100, 100);
Random r = new Random();
Timer timer = new Timer(r.nextInt(5000) + 1000, new ActionListener() {
public void actionPerformed(ActionEvent ev) {
System.out.println("Timer out");
g.setColor(Color.green);
g.fillOval(100, 100, 100, 100);
}
});
timer.start();
}
}
}
Tipp: Beginnen Sie nicht jeden Satz mit "So", Sie erzählen keine Geschichte. – user1803551
Ich weiß, ich sollte nicht, aber ich weiß nicht mit welchem Wort einen Satz beginnen. xD –
Entfernen Sie einfach "So" und der Satz ist in Ordnung, wie es ist. – user1803551