java基础知识,我想让一个球移动,怎么画出一条圆柱出来了?

importjava.awt.Color;importjava.awt.Graphics;importjavax.swing.JFrame;importjavax.imp... import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class A1 extends JFrame{
public static void main(String[] args) {
new A1();
}
A1(){
this.setSize(700,500);
this.setLocation(300, 100);
this.setResizable(false);//窗口可调尺寸(假)
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);

Myqiu m=new Myqiu();
this.add(m);
m.move1(); //这里不对?怎么不能用this.move1();

}

}

class Myqiu extends JPanel{ //球类,画球,球移动
double x=100;
double y=100;
public void paint(Graphics g) { //画圆球
g.setColor(Color.black);
g.fillOval((int)x, (int)y, 30, 30);
}

public void move1(){ //球体移动
while(true){
try {
Thread.sleep(30);
} catch (InterruptedException e) {
e.printStackTrace();
}
x+=10;
this.repaint(); //重画
}
}
}
展开
 我来答 举报
爱吃溜肥肠
推荐于2018-05-01 · TA获得超过627个赞
知道小有建树答主
回答量:326
采纳率:50%
帮助的人:219万
展开全部
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package test;
 
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
 
public class A1 extends JFrame {
    public static void main(String[] args) {
        new A1();
    }
 
    A1() {
        this.setSize(700500);
        this.setLocation(300100);
        this.setResizable(false);// 窗口可调尺寸(假)
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
 
        Myqiu m = new Myqiu();
        this.add(m);
        m.move1(); // 这里不对?怎么不能用this.move1();
 
    }
 
}
 
class Myqiu extends JPanel { // 球类,画球,球移动
    double x = 100;
    double y = 100;
 
    public void paint(Graphics g) { // 画圆球
    // 在这里加入一行代码
        super.paint(g);
        g.setColor(Color.black);
        g.fillOval((int) x, (int) y, 3030);
    }
 
    public void move1() { // 球体移动
        while (true) {
            try {
                Thread.sleep(30);
            catch (InterruptedException e) {
                e.printStackTrace();
            }
            x += 10;
            this.repaint(); // 重画
        }
    }
}

你的程序中,少写了一行代码!就是在paint()方法内,写入super.paint(g);改后,测试正常.

dark19861201
2018-04-28 · TA获得超过2153个赞
知道大有可为答主
回答量:2584
采纳率:79%
帮助的人:1791万
展开全部

主要原因就是你不停的在面板上面画圆,然后你画第二个的时候,第一个圆还在上面,所以无限的圆连起来就看见像个圆柱了,所以你简单的改一下,每次画圆之前都清空当前画布,就可以有运动的效果了

1
2
3
4
5
public void paint(Graphics g) { // 画圆球
        g.clearRect(00700500);
        g.setColor(Color.black);
        g.fillOval((int) x, (int) y, 3030);
    }
抢首赞 已赞过 已踩过<
你对这个回答的评价是?
评论 举报 收起
火羽传
2014-09-09 · 超过30用户采纳过TA的回答
知道答主
回答量:92
采纳率:0%
帮助的人:39.9万
展开全部
在paint()方法第一行加上super.paint(g);
1 已赞过 已踩过<
你对这个回答的评价是?
评论 举报 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式