xiaofan428 2016-10-17 13:50 采纳率: 0%
浏览 1681

想使用java中的线程控制小球在格子移动

想使用java中的线程控制小球在格子中从左向右移动。但是线程的run()方法中却没有调用绘图方法repaint(),麻烦请问一下这个怎么解决?

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

import com.soft.Graphic.*;

public class TransportDemo extends Thread {

// 定义数组,一个数组元素对应一个格子
int a[] = new int[10];
// 设置变量,方便循环使用
 int j = 0;
 int jj = 0;
// 定义标志,用来控制格子中有几个点
int flag = 1;

// 实例化矩形和圆形类
Rectangles rect = new Rectangles();
Circle circle = new Circle();

// 定义窗口大小
private final int AREA_WIDTH = 340;
private final int AREA_HEIGHT = 240;

// 定义窗口
JFrame f = new JFrame("测试窗口");
// 定义画布大小
Grain gr = new Grain();

// 定义计时器
Timer timer;
Timer timer1;

public void init() {
    gr.setPreferredSize(new Dimension(AREA_WIDTH, AREA_HEIGHT));
    // 循环赋值个数组,1为占据,0为空

// for (int ii = 0; ii < flag; ii++) {
// a[ii] = 1;
// }

    f.add(gr);
    f.pack();
    f.setVisible(true);
}


//线程方法,设置数组中的位置值为0或者1。
public void run (){
    super.run();
    System.out.println("已经进入进程");
    while(true){
    if(j==0){
        a[0]=1;
        j+=1;
    }else if(j==a.length-1){
        a[j]=0;
        j=0;
    }else{
        a[j]=0;
        a[j+1]=0;
        j+=1;
    }
    gr.repaint();
    }
}



// 图像呈现面板
class Grain extends Canvas {
    @Override
    public void paint(Graphics g) {
        // 遍历数组,当数组的位置的值为1,则显示粒子
        System.out.println("调用了repaint函数");
        for (int i = 0; i < a.length; i++) {
            if (a[i] == 1) {
                g.setColor(Color.black);
                g.fillOval(i * 20 + circle.getBallX(), circle.getBallY(),20, 20);
            }
        }
        // 绘制网格
        rect.paint(g);
    }

}

public static void main(String[] args) {
    new TransportDemo().init();
    new TransportDemo().start();
}

}

  • 写回答

1条回答 默认 最新

  • ExceptionMapping 2017-01-03 03:11
    关注

    你的System.out.println("已经进入进程");可以运行么?

    评论

报告相同问题?

悬赏问题

  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
  • ¥20 matlab yalmip kkt 双层优化问题
  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
  • ¥88 实在没有想法,需要个思路