我封装了一个类 想实现 运行后产生一个矩形 然后矩形向右运动,于是用wait
方法 使运动过程可见 但是wait(timeout),wait并没有等待timeout秒,这是怎么回事?还有怎么才能实现让矩形慢慢向右运动呢?
import javax.swing.*;
import java.awt.*;
class RectangleEx extends JFrame{
private int height=0,width=0;//declare fields;
public RectangleEx(){ }//constructor;
public void setHeight(int h){
height=h;
}
public void setWidth(int w){
width=w;
}
public int calculateArea(){
return height*width;
}
@Override
public void paint(Graphics g){
int s=0;
for(int i=60;i<=500;i++){
g.clearRect(i-1, 50, width, height);//清除前面的矩形;
//g.drawRect(i,50, width, height);
s=(i-60)%6;//用此产生6种情况以改变颜色;
switch (s){//选择颜色;
case 0:
g.setColor(Color.red);
break;
case 1:
g.setColor(Color.BLUE);
break;
case 2:
g.setColor(Color.PINK);
break;
case 3:
g.setColor(Color.ORANGE);
break;
case 4:
g.setColor(Color.GRAY);
break;
case 5:
g.setColor(Color.MAGENTA);
break;
}
g.fillRect(i, 50, width, height);
try{
g.wait(100);
}
catch(Exception e){
System.out.println("wenti");
}//为什么此处用wait()方法不管用?
}
}
public void draw(){
//this.setForeground(Color.blue);
this.setBackground(Color.yellow);//设置背景;
this.setSize(600,500);//设置窗口大小;
this.setVisible(true);//可见;
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗口,关闭程序;
this.setResizable(false);//禁止改变窗口大小;
repaint();
}
}
代码如上,帮忙解决一下,谢谢
方法 使运动过程可见 但是wait(timeout),wait并没有等待timeout秒,这是怎么回事?还有怎么才能实现让矩形慢慢向右运动呢?
import javax.swing.*;
import java.awt.*;
class RectangleEx extends JFrame{
private int height=0,width=0;//declare fields;
public RectangleEx(){ }//constructor;
public void setHeight(int h){
height=h;
}
public void setWidth(int w){
width=w;
}
public int calculateArea(){
return height*width;
}
@Override
public void paint(Graphics g){
int s=0;
for(int i=60;i<=500;i++){
g.clearRect(i-1, 50, width, height);//清除前面的矩形;
//g.drawRect(i,50, width, height);
s=(i-60)%6;//用此产生6种情况以改变颜色;
switch (s){//选择颜色;
case 0:
g.setColor(Color.red);
break;
case 1:
g.setColor(Color.BLUE);
break;
case 2:
g.setColor(Color.PINK);
break;
case 3:
g.setColor(Color.ORANGE);
break;
case 4:
g.setColor(Color.GRAY);
break;
case 5:
g.setColor(Color.MAGENTA);
break;
}
g.fillRect(i, 50, width, height);
try{
g.wait(100);
}
catch(Exception e){
System.out.println("wenti");
}//为什么此处用wait()方法不管用?
}
}
public void draw(){
//this.setForeground(Color.blue);
this.setBackground(Color.yellow);//设置背景;
this.setSize(600,500);//设置窗口大小;
this.setVisible(true);//可见;
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗口,关闭程序;
this.setResizable(false);//禁止改变窗口大小;
repaint();
}
}
代码如上,帮忙解决一下,谢谢
直接sleep吧
直接用sleep就好了
{
public static void main(String[] args)
{
RectangleEx c1=new RectangleEx();
c1.setHeight(60);
c1.setWidth(60);
c1.draw();
}
}
这是测试类的代码 为什么矩形会走两遍呢? 不就一个for循环吗 可是矩形走到头回来又走一遍