java中怎样才能使paintComponent(Graphics g)方法持续的画圆?即:使圆动起来(代码如下)

如下的代码已经能够实现了画一个圆!我现在想让这个圆动起来!尝试了用线程持续画圆的方法让这个圆动起来!但是在这个位置“g.fillOval(50,50,30,30);”提示... 如下的代码已经能够实现了画一个圆!我现在想让这个圆动起来!尝试了用线程持续画圆的方法让这个圆动起来!但是在这个位置“g.fillOval(50, 50, 30, 30);”提示这个方法里面的数值不能是变量!所以不知道该怎么做下去了!求救!
import java.awt.*;
import java.awt.event.*;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class TankWar3 extends JFrame {

//int x = 50, y = 50;

public void init() { // 窗口
GridLayout layout = new GridLayout();// 布局
JPanel jpanel = new JPanel(layout) {
protected void paintComponent(Graphics g) { // 负责画圆
super.paintComponents(g);
Color color = g.getColor(); // 设置 圆 的颜色
g.setColor(Color.RED);
g.fillOval(50, 50, 30, 30);// 设置 圆 的位置、大小
g.setColor(color);
}
};
JFrame window = new JFrame("window");
window.setBounds(100, 100, 800, 600); // 设置底层容器位置和大小
window.getContentPane().setLayout(layout); // 为底层容器 window 布局
window.getContentPane().add(jpanel); // 将容器 JPanel 添加到 底层容器 window 中
Container con = jpanel.getRootPane(); // 设置窗口背景颜色
con.setBackground(Color.yellow);
window.setResizable(false); // 设置 窗口 是否可由用户调整大小
window.setVisible(true);
window.setDefaultCloseOperation(DISPOSE_ON_CLOSE);

}

/*
class PaintThread implements Runnable {

public void run() {

}

}
*/

public static void main(String[] args) {

TankWar3 tankwar = new TankWar3();
tankwar.init();
}
}
展开
 我来答
紫薇参星
科技发烧友

推荐于2016-07-24 · 有一些普通的科技小锦囊
知道大有可为答主
回答量:5983
采纳率:92%
帮助的人:3473万
展开全部
我看了你的程序,帮你实现了让圆动起来,你看看吧。
完整的程序如下:
import java.awt.*;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class TankWar3 extends JFrame {
public void init() { // 窗口
GridLayout layout = new GridLayout();// 布局
PaintThread jpanel = new PaintThread();
Thread t=new Thread(jpanel);
t.start();
JFrame window = new JFrame("window");
window.setBounds(100, 100, 800, 600); // 设置底层容器位置和大小
window.getContentPane().setLayout(layout); // 为底层容器 window 布局
window.getContentPane().add(jpanel); // 将容器 JPanel 添加到 底层容器 window 中
jpanel.setBackground(Color.yellow);
window.setResizable(false); // 设置 窗口 是否可由用户调整大小
window.setVisible(true);
window.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
}
public static void main(String[] args) {
TankWar3 tankwar = new TankWar3();
tankwar.init();
}
}

class PaintThread extends JPanel implements Runnable {
int x = 50, y = 50;
public void paint(Graphics g) { // 负责画圆
super.paint(g);
g.setColor(Color.RED);
g.fillOval(50+x, 50+y, 30, 30);// 设置 圆 的位置、大小
}
public void run() {
do{
x=x+10;
y=y+10;
repaint();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}while(y<500);
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式