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(); //重画
}
}
} 展开
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(); //重画
}
}
} 展开
3个回答
展开全部
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(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) { // 画圆球
// 在这里加入一行代码
super.paint(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(); // 重画
}
}
}
你的程序中,少写了一行代码!就是在paint()方法内,写入super.paint(g);改后,测试正常.
展开全部
主要原因就是你不停的在面板上面画圆,然后你画第二个的时候,第一个圆还在上面,所以无限的圆连起来就看见像个圆柱了,所以你简单的改一下,每次画圆之前都清空当前画布,就可以有运动的效果了
public void paint(Graphics g) { // 画圆球
g.clearRect(0, 0, 700, 500);
g.setColor(Color.black);
g.fillOval((int) x, (int) y, 30, 30);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在paint()方法第一行加上super.paint(g);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |