import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Shape;
import java.awt.geom.Ellipse2D;import javax.swing.JFrame;
import javax.swing.JPanel;public class ThreadTest {
private JFrame frame;
public ThreadTest(){
frame=new JFrame("自动刷新");
GraphPanel gp=new GraphPanel();
frame.add(gp,BorderLayout.CENTER);
}
public void showMe(){
Thread t=new Thread(new GraphPanel());
t.start();
frame.setVisible(true);
frame.setSize(500,500);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new ThreadTest().showMe();
}}class GraphPanel extends JPanel implements Runnable{
private int x,y;
private Color c;
private int i=0;
public void run() {
while(true){
repaint();
System.out.println("被刷新");
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public void paintComponent(Graphics g){
super.paintComponent(g);
x=(int)(Math.random()*200+1);
y=(int)(Math.random()*200+1);
if(i%2==0){
c=Color.BLUE;
}else{
c=Color.RED;
}
i++;
System.out.println(x);
Graphics2D g2=(Graphics2D)g;
Shape s=new Ellipse2D.Double(x,y,55,55);
g2.setColor(c);
g2.draw(s);
g2.fill(s);
}
}
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Shape;
import java.awt.geom.Ellipse2D;import javax.swing.JFrame;
import javax.swing.JPanel;public class ThreadTest {
private JFrame frame; public ThreadTest() {
frame = new JFrame("自动刷新");
GraphPanel gp = new GraphPanel();
frame.add(gp, BorderLayout.CENTER);
} public void showMe() {
// Thread t = new Thread(new GraphPanel());
// t.start();
frame.setVisible(true);
frame.setSize(500, 500);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
} public static void main(String[] args) {
new ThreadTest().showMe();
}}class GraphPanel extends JPanel {
private int x, y;
private Color c;
private int i = 0; public GraphPanel() {
(new Thread(new Delay(this))).start();
} public void paintComponent(Graphics g) {
super.paintComponent(g);
x = (int) (Math.random() * 200 + 1);
y = (int) (Math.random() * 200 + 1);
if (i % 2 == 0) {
c = Color.BLUE;
} else {
c = Color.RED;
}
i++;
Graphics2D g2 = (Graphics2D) g;
Shape s = new Ellipse2D.Double(x, y, 55, 55);
g2.setColor(c);
g2.draw(s);
g2.fill(s);
}
}class Delay implements Runnable { private GraphPanel panel; public Delay(GraphPanel panel) {
this.panel = panel;
} public void run() {
while (true) {
panel.repaint();
System.out.println("重绘了");
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
} }
}