не уверен, почему я не могу получить addMouseListener (this ()), addMouseMotionListener (this ()) для работы - PullRequest
0 голосов
/ 09 декабря 2010

Итак, это панель для моего RocketShip, и я хочу добавить к ней мой MouseListener и MouseMotionListener, но он говорит мне, что «this» является недопустимым именем.Мой учебник иногда использует это, и профессор также рекомендовал, чтобы мы использовали «это» в этом случае, поэтому я застрял в том, в чем проблема.Мой код ниже, например.Спасибо за любой совет, который вы могли бы предложить.

    import java.applet.*;
import java.awt.*;           
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.util.Random;

import javax.swing.JFrame;
import javax.swing.JPanel;

//I cannot understand how to draw my new rocketship or how to update the coordinates for mouse moved, mouse dragged, mouse pressed or mouse released
//also not sure how to work with setShooting
public class RocketShipPanel extends JPanel implements MouseListener,MouseMotionListener
{
    private final int WIDTH = 300, HEIGHT = 300;
    RocketShip ship = new RocketShip();

    public RocketShipPanel(){ //constructor
        addMouseListener (this());
        addMouseMotionListener (this());

        setBackground (Color.black);
        setPreferredSize (new Dimension(WIDTH, HEIGHT));
    }


    public void paintComponent (Graphics page)
    {
        super.paintComponent(page);

        ship.draw(page, 50);


    }

    public void mousePressed (MouseEvent event)
    {
        ship.setShooting(true);
        repaint();
    }
    public void mouseReleased (MouseEvent event) 
    {
        ship.setShooting(false);
        repaint();
    }
    public void mouseMoved (MouseEvent event)
    {

        Point point1 = event.getPoint();
        int x = point1.x;
        int y = point1.y;
        ship.move(x, y);

        repaint();
    }
    public void mouseDragged (MouseEvent event)
    {

        Point point1 = event.getPoint();
        int x = point1.x;
        int y = point1.y;
        ship.move(x, y);

        //pointList.add(event.getPoint());

        repaint();
    }
    //--------------------------------------------------------------
    //  Provide empty definitions for unused event methods.
    //--------------------------------------------------------------

    public void mouseEntered (MouseEvent event) {}
    public void mouseExited (MouseEvent event) {}
    public void mouseClicked(MouseEvent event) {}


    public static void main (String[] args)
    {
        JFrame frame = new JFrame ("RocketShip");
        frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);

        frame.getContentPane().add (new RocketShipPanel());

        frame.pack();
        frame.setVisible(true);
    }
}

Ответы [ 2 ]

6 голосов
/ 09 декабря 2010

Вам не нужны скобки после this. Это похоже на имя переменной, а не на метод.

0 голосов
/ 30 мая 2014

это ключевое слово в JAVA, и его не следует рассматривать как метод, это ссылка на текущий объект. Вы можете узнать об этом ключевом слове по следующей ссылке - http://docs.oracle.com/javase/tutorial/java/javaOO/thiskey.html

...