Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Can';我看不出有什么进展_Java - Fatal编程技术网

Java Can';我看不出有什么进展

Java Can';我看不出有什么进展,java,Java,我想创建一个事件,以便在鼠标事件上测试真/假,在假的情况下,会出现一个简单的动画,但我只看到动画的结果,而不是动画本身 我已经将“miss”、“dx”和“dy”定义为实例变量 public void mousePressed(MouseEvent e) { swingSword(); determineHit(); if (determineHit()){ GRect test = new GRect(testX, testY, BRICK_WID

我想创建一个事件,以便在鼠标事件上测试真/假,在假的情况下,会出现一个简单的动画,但我只看到动画的结果,而不是动画本身

我已经将“miss”、“dx”和“dy”定义为实例变量

    public void mousePressed(MouseEvent e) {
    swingSword();
    determineHit();
    if (determineHit()){
        GRect test = new GRect(testX, testY, BRICK_WIDTH, BRICK_HEIGHT);
        test.setFilled(true);
        test.setFillColor(Color.GREEN);
        add(test);
        testX += 30;
    }
    else {
        GRect test = new GRect(testX, testY, BRICK_WIDTH, BRICK_HEIGHT);
        test.setFilled(true);
        test.setFillColor(Color.RED);
        add(test);
        testX += 30;

        miss = new GRect(200, 200, BRICK_WIDTH, BRICK_HEIGHT);
        miss.setFilled(true);
        miss.setFillColor(Color.RED);
        add(miss);
        for (int i = 0; i < 10; i++){
            miss.move(dx, dy);
            pause(200);
        }

    }
}
public void鼠标按下(MouseEvent e){
swingSword();
确定它();
if(determineHit()){
GRect测试=新GRect(testX、testY、砖宽、砖高);
test.setFilled(真);
测试。设置填充颜色(颜色为绿色);
添加(测试);
testX+=30;
}
否则{
GRect测试=新GRect(testX、testY、砖宽、砖高);
test.setFilled(真);
测试。设置填充颜色(颜色为红色);
添加(测试);
testX+=30;
未命中=新GRect(200,200,砖宽,砖高);
setFilled小姐(对);
小姐。setFillColor(颜色。红色);
添加(未命中);
对于(int i=0;i<10;i++){
未命中移动(dx,dy);
暂停(200);
}
}
}

您正在阻止事件分派线程

执行
mousePressed
方法的线程与负责重新绘制的线程相同。因此,当该线程处理
for
-循环(并在
pause
方法中等待)时,他没有机会实际重新绘制屏幕

根据周围的基础设施,您可以使用自己的线程或swing计时器来解决这个问题。这意味着您可以将-循环的
替换为大致如下所示的代码:

final Timer timer = new Timer(200, null);
timer.addActionListener(new ActionListener()
{
    int counter = 0;
    @Override
    public void actionPerformed(ActionEvent e) 
    {
         miss.move(dx, dy);
         counter++;
         if (counter >= 10)
         {
             timer.stop();
         }
    }
});
timer.start(); 

啊,acm,在放弃学习java之前我必须学习什么。这段代码怎么了?我没有看到GRect“miss”在屏幕上移动,GRect只是出现在总延迟计数的末尾。