下面程序实现了给定半径面随机颜色的圆,现在要求用纯种实现画20个圆,每隔两秒画一个,画出的圆不消失,颜色位置随机出现
/********Container类********/import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;public class Cantainer extends JFrame implements ActionListener
{
Container c = this.getContentPane();
BorderLayout bL = new BorderLayout();
JTextField jtf;
JButton btn;
public static int num;
String s;
Circle applet;
// Graphics g;
public Cantainer()
{
btn=new JButton("确定");
jtf=new JTextField();
c.setLayout(bL);
c.add(jtf,BorderLayout.NORTH);
c.add(btn,BorderLayout.SOUTH);
btn.addActionListener(this);
applet = new Circle();
applet.init();
c.add(applet, BorderLayout.CENTER);
}
public void actionPerformed(ActionEvent e)
{
s=jtf.getText();
num=Integer.parseInt(s);
applet.setR(num);
for(int i=1;i<20;i++){
System.out.print(i);
applet.repaint();
c.setSize(500,500+i);
}
}
}/*********** circle类************/
package com.jluzh.shiyan;
import java.applet.Applet;import java.awt.Color;import java.awt.Graphics;import java.util.Random;
public class Circle extends Applet{
int x,y;
int r;
int R,G,B;
Graphics g;
Random rd=new Random(); Circle(int r)
{
this();
this.r=r;
init();
} public Circle(){
super();
} public void init(){
this.resize(500,500);
} public void paint(Graphics g){
x=rd.nextInt(this.getWidth());
y=rd.nextInt(this.getHeight());
R=rd.nextInt(255);
B=rd.nextInt(255);
G=rd.nextInt(255);
// for(int i=0;i<10;i++){
g.setColor(Color.white);
Color color=new Color(R,G,B);
g.setColor(color);
g.fillArc(x,y,r,r,0,360);
// }
} public void setR(int r) {
this.r = r;
}
}
/******************main类************************/
public class Main {
public static void main(String[] args) {
Cantainer c=new Cantainer();
c.setSize(500, 500);
c.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
c.setVisible(true);
}
}
/********Container类********/import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;public class Cantainer extends JFrame implements ActionListener
{
Container c = this.getContentPane();
BorderLayout bL = new BorderLayout();
JTextField jtf;
JButton btn;
public static int num;
String s;
Circle applet;
// Graphics g;
public Cantainer()
{
btn=new JButton("确定");
jtf=new JTextField();
c.setLayout(bL);
c.add(jtf,BorderLayout.NORTH);
c.add(btn,BorderLayout.SOUTH);
btn.addActionListener(this);
applet = new Circle();
applet.init();
c.add(applet, BorderLayout.CENTER);
}
public void actionPerformed(ActionEvent e)
{
s=jtf.getText();
num=Integer.parseInt(s);
applet.setR(num);
for(int i=1;i<20;i++){
System.out.print(i);
applet.repaint();
c.setSize(500,500+i);
}
}
}/*********** circle类************/
package com.jluzh.shiyan;
import java.applet.Applet;import java.awt.Color;import java.awt.Graphics;import java.util.Random;
public class Circle extends Applet{
int x,y;
int r;
int R,G,B;
Graphics g;
Random rd=new Random(); Circle(int r)
{
this();
this.r=r;
init();
} public Circle(){
super();
} public void init(){
this.resize(500,500);
} public void paint(Graphics g){
x=rd.nextInt(this.getWidth());
y=rd.nextInt(this.getHeight());
R=rd.nextInt(255);
B=rd.nextInt(255);
G=rd.nextInt(255);
// for(int i=0;i<10;i++){
g.setColor(Color.white);
Color color=new Color(R,G,B);
g.setColor(color);
g.fillArc(x,y,r,r,0,360);
// }
} public void setR(int r) {
this.r = r;
}
}
/******************main类************************/
public class Main {
public static void main(String[] args) {
Cantainer c=new Cantainer();
c.setSize(500, 500);
c.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
c.setVisible(true);
}
}
public void actionPerformed(ActionEvent e) {
s=jtf.getText();
num=Integer.parseInt(s);
applet.setR(num);
//for(int i=1;i<20;i++){
// System.out.print(i);
// applet.repaint();
// c.setSize(500,500+i);
//}
Thread t = new Thread() {
public void run() {
while (true) {
applet.paintComponent(applet.getGraphics());
c.setSize(500,500+i);
try {sleep(2000);} catch (Exception e) {}
}
}
}.start();
btn.setEnabled(false); //避免多次点按钮
}
public void run() {
while (true) {
applet.paintComponent(applet.getGraphics());
c.setSize(500,500+i);
try {sleep(2000);} catch (Exception e) {}
}
}
};
t.start(); //不好意思,这里分开来写
不知道你的意图是什么,在你的基础上帮你改
一种用线程,一种用timer,建议还是用timer控制的好
public class Cantainer extends JFrame implements ActionListener {
Container c = this.getContentPane();
BorderLayout bL = new BorderLayout();
JTextField jtf;
JButton btn;
int num;
Circle applet;
Thread thread; //method 1
boolean flag = false; //method 1
//javax.swing.Timer timer; //method 2
public static void main(String[] args) {
Cantainer c=new Cantainer();
c.setSize(500, 500);
c.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
c.setVisible(true);
} public Cantainer() {
btn=new JButton("submit");
jtf=new JTextField("20");
c.setLayout(bL);
c.add(jtf,BorderLayout.NORTH);
c.add(btn,BorderLayout.SOUTH);
btn.addActionListener(this);
applet = new Circle();
applet.init();
c.add(applet, BorderLayout.CENTER);
//timer = new javax.swing.Timer(2000, new ActionListener() {
// public void actionPerformed(ActionEvent e) {
// applet.paint(applet.getGraphics());
// }
//}); //method 2
}
public void actionPerformed(ActionEvent e) {
stop(); //method 1
//timer.stop(); //method 2
try {
num=Integer.parseInt(jtf.getText());
} catch (Exception ee) {
num = 20;
}
applet.setR(num);
applet.repaint(); //调用一下repaint就可以全部清空了
start(); //method 1
//timer.start(); //method 2
} protected void stop() { //method 1
while (flag) {
try {thread.interrupt();
Thread.sleep(10);
} catch (Exception ee) {}
}
} protected void start() { //method 2
flag = true;
thread = new Thread() {
public void run() {
while (flag) {
//applet.paint(applet.getGraphics());
try {
sleep(2000);
} catch (Exception e) {
flag = false;
break;
}
}
}
};
thread.start();
}
}