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(); //重画
}
}
} 展开
展开全部
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( 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);改后,测试正常.
展开全部
主要原因就是你不停的在面板上面画圆,然后你画第二个的时候,第一个圆还在上面,所以无限的圆连起来就看见像个圆柱了,所以你简单的改一下,每次画圆之前都清空当前画布,就可以有运动的效果了
1 2 3 4 5 | 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);
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询