Tôi chưa bao giờ làm việc với Timer
giây trước đó nên vấn đề của tôi có lẽ là một sự thật ngu ngốc. Chương trình của tôi vẽ một vòng tròn màu đỏ và sau giây ngẫu nhiên, vòng tròn sẽ đổi màu thành màu xanh lục. Tôi chỉ cần thực hiện một bộ đếm thời gian xoay như bạn có thể thấy bên dưới trong mã. Và nó đi vào phương pháp actionPerformed()
nhưng nó không thay đổi màu sắc. Bạn có thể giúp tôi bằng cách nào đó sửa chữa vấn đề của tôi với thay đổi màu sắc?Vẽ bên trong Bộ định thời Đuổi không hoạt động
Mã của tôi:
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();
}
}
}
Mẹo tiếng Anh: không bắt đầu mọi câu với "Vì vậy", bạn không kể một câu chuyện. – user1803551
Tôi biết tôi không nên nhưng tôi không biết từ nào bắt đầu một câu. xD –
Chỉ cần xóa "Vì vậy" và câu là tốt như nó được. – user1803551