移动球java代码不起作用

时间:2013-07-09 19:31:01

标签: java awt

我正在尝试编写一些代码,当鼠标靠近它时会导致2d球移动,但它无法正常工作。 (我没有编程很长时间..) 这是当前的代码:

import java.awt.Color;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;

import acm.graphics.*;
import acm.program.*;



@SuppressWarnings("serial")
public class MoveAway extends GraphicsProgram implements MouseMotionListener {

static int width;
static int height;
int x = 100;
int y = 100;
GOval runaway;


public void main(){
    System.out.println("Movement Detected");
    System.out.println("Stop Moving!");
    width = getSize().width;
    height = getSize().height;
    addMouseMotionListener(this);

}

public void run() {
    System.out.println(width);
    System.out.println(height);
    GOval runaway = new GOval(50, 50);
    runaway.setColor(Color.blue);
    runaway.setFilled(true);
    add(runaway);
    runaway.setLocation(x, y);

}
public void mouseMoved(MouseEvent e) {
    System.out.println("test");
    if(x - e.getX() > -50  && y - e.getY() > -50) {
        runaway.setLocation(x - 1, y - 1);
        y = y - 1;
        x = x - 1;
        System.out.println("Close!");
    }

    if(x - e.getX() < 50 && y - e.getY() < 50){
        runaway.setLocation(x + 1, y + 1);
        y = y +1;
        x = x - 1;
        System.out.println("Close!");
    } 
}
}

其中一些(或大多数)可能是超级初学者的东西,这是非常明显的,但我不知道该怎么做。

2 个答案:

答案 0 :(得分:2)

你有很多事情要做的不太正确,但我会尽力引导你走上正确的道路。

  • 首先,您需要对MVC进行一些阅读。这是一个将GUI与逻辑分开的设计原则,这将使您的代码更易于维护。您将需要创建一个不同的类来处理MouseListener。

  • 这显然应该是你的主类,所以你需要让你的主方法有以下格式

    public static void main(String[] args)
    
  • 你的一些方法调用毫无意义。例如,行:

    width = getSize().width;
    height = getSize().height;
    

getSize()永远不会在您的程序中定义(尽管它应该是。请参阅this关于“getters and setters”的变量),即使它是,“。width”和“.height”是什么“ 应该做的?您需要重新考虑如何设置这些变量。

addMouseMotionListener()也从未定义,因此尝试在main方法中调用它不会做任何事情。

你的run()方法永远不会在main中调用,因此其中的任何代码都可能不存在。

我也不确定你用mouseMoved()做了什么,也从未在你的代码中调用过,所以我无法真正帮助你解决逻辑问题。

我希望这会有所帮助!祝好运。 :)

答案 1 :(得分:1)

您需要通过main方法运行程序。现在看起来你有一些你根本不使用的方法(运行)