私はTimer
の前に私の問題はおそらく愚かなものです。私のプログラムは赤色の円を描き、無限秒後に円が緑色に変わるはずです。私はちょうどあなたがコードで見ることができるようにスイングタイマーを作った。そして、actionPerformed()
メソッドを入力しますが、色は変わりません。どうにか色を変えることで私の問題を解決できますか?スイングタイマーのペインティングが動作しません
マイコード:
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();
}
}
}
英語のヒント:「So」ですべての文章を開始しないでください。あなたは話をしていません。 – user1803551
私は知っているべきではないが、私はどの単語が文章を始めるか分からない。 xD –
"So"を削除するだけで、文章はそのままです。 – user1803551