Non ho mai lavorato con Timer
s prima quindi il mio problema è probabilmente uno stupido. Il mio programma disegna un cerchio che è rosso e dopo secondi casuali il cerchio dovrebbe cambiare il suo colore in verde. Ho appena fatto uno swing timer come puoi vedere qui sotto nel codice. Ed entra nel metodo actionPerformed()
ma non cambia colore. Potresti aiutarmi in qualche modo a risolvere il mio problema con il cambiamento dei colori?La pittura all'interno del timer di pendolamento non funziona
Il mio codice:
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();
}
}
}
Consiglio in italiano: non iniziare ogni frase con "Così", non stai raccontando una storia. – user1803551
So che non dovrei, ma non so con quale parola iniziare una frase. xD –
Basta rimuovere "So" e la frase va bene così com'è. – user1803551