我在一个JFrame里面重画了一个圆,让它向下移动,可是显示出来的效果是向下增长的一条圆形粗线,如果把JFrame换成Frame就正常了,是一个向下移动的圆。
请问,就用JFrame,改一改能不能也向用Frame的效果一样,让一个圆向下移动。我的代码:
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;public class TankClient extends JFrame{ int x=50,y=50;
public void paint(Graphics g) { // 画一个坦克
Color c = g.getColor();
g.setColor(Color.RED);
g.fillOval(x, y, 30, 30);
g.setColor(c);
y += 5;
}
public void lauchFrame() //打开一个窗口
{
this.setLocation(200, 50);
this.setSize(800, 600);
this.setTitle("TankWar");
this.setResizable(false);
this.setBackground(Color.GREEN);
this.setVisible(true);
new Thread(new PaintThread()).start();
}
private class PaintThread implements Runnable //让坦克动起来(内部类)
{ public void run()
{
while (true)
{
repaint();
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args) { // 程序入口
TankClient tc = new TankClient();
tc.lauchFrame();
}
}
请问,就用JFrame,改一改能不能也向用Frame的效果一样,让一个圆向下移动。我的代码:
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;public class TankClient extends JFrame{ int x=50,y=50;
public void paint(Graphics g) { // 画一个坦克
Color c = g.getColor();
g.setColor(Color.RED);
g.fillOval(x, y, 30, 30);
g.setColor(c);
y += 5;
}
public void lauchFrame() //打开一个窗口
{
this.setLocation(200, 50);
this.setSize(800, 600);
this.setTitle("TankWar");
this.setResizable(false);
this.setBackground(Color.GREEN);
this.setVisible(true);
new Thread(new PaintThread()).start();
}
private class PaintThread implements Runnable //让坦克动起来(内部类)
{ public void run()
{
while (true)
{
repaint();
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args) { // 程序入口
TankClient tc = new TankClient();
tc.lauchFrame();
}
}
解决方案 »
- Java 连接到一台通过代理上网的电脑
- 055.154-Which statement is true?
- 使用Spring框架的好处?几次面试都问到了这个问题...
- 帮我看一下是什么错误?
- java
- 用java可以做什么样的毕业设计
- [100分]很基础的问题:关于把int型的值转换为byte后,为什么下面的得到结果是这样,要符合什么样的规律????
- 请教高手帮忙,文本换行与JSP页面换行的转变。解决必给高分!!
- 编译通过,执行出错。!
- 在frame中可不可以用自己的方法画图????
- 一个从ftp服务器上下载文件的问题,如果知道服务器上文件的状态
- getClass().getClassLoader() 返回 null
super.paint(g);
Color c = g.getColor();
g.setColor(Color.RED);
g.fillOval(x, y, 30, 30);
g.setColor(c);y += 5;
} 可以解决你的问题,不过如果把sleep时间缩短,就会出现闪烁问题,
这好像是跟Frame和JFrame窗口结构不同有关,具体的还在研究中。。