Java 不知道为什么我可以';不要让addMouseListener(this()),addMouseMotionListener(this())工作
这是我火箭飞船的面板,我想添加我的MouseListener和MouseMotionListener,但它告诉我“this”是一个无效的名称。我的教科书有时会用到这个,教授也建议我们在这个例子中使用“this”,所以我对问题所在感到困惑。例如,下面是我的代码。谢谢你的建议Java 不知道为什么我可以';不要让addMouseListener(this()),addMouseMotionListener(this())工作,java,this,jpanel,Java,This,Jpanel,这是我火箭飞船的面板,我想添加我的MouseListener和MouseMotionListener,但它告诉我“this”是一个无效的名称。我的教科书有时会用到这个,教授也建议我们在这个例子中使用“this”,所以我对问题所在感到困惑。例如,下面是我的代码。谢谢你的建议 import java.applet.*; import java.awt.*; import java.awt.event.MouseEvent; import java.awt.event.M
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);
}
}
此之后不需要括号。它就像一个变量名,而不是一个方法。这是JAVA中的一个关键字,不应将其视为一个方法,它是对当前对象的引用。你可以在下面的链接中了解这个关键词-谢谢,我觉得自己像个傻瓜now@Josh-不要。在我们的编程生涯中,我们都会在某些时候犯明显的错误。这些通常是最难找到的。。。