Java 使用mousemovementListener实现错误
我知道以前有人问过这个问题,但无论我在哪里看到这个问题,答案都毫无帮助。。。这就来了 我正在使用《学习Java》一书,有一个例子如下:Java 使用mousemovementListener实现错误,java,Java,我知道以前有人问过这个问题,但无论我在哪里看到这个问题,答案都毫无帮助。。。这就来了 我正在使用《学习Java》一书,有一个例子如下: import java.awt.*; import java.awt.event.*; import javax.swing.*; public class HelloJava2 { public static void main( String [] args ) { JFrame frame = new JFrame( "Hello
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class HelloJava2 {
public static void main( String [] args ) {
JFrame frame = new JFrame( "HelloJava2" );
frame.add( new HelloComponent2("Hello, Java!") );
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
frame.setSize( 300, 300 );
frame.setVisible( true );
}
}
class HelloComponent2 extends JComponent
implements MouseMotionListener
{
String theMessage;
int messageX = 125;
int messageY = 95;
public HelloComponent2( String message ) {
theMessage = message;
addMouseMotionListener(this);
}
public void paintComponent(MouseEvent e) {
// Save the mouse coordinates and paint the message.
messageX = e.getX();
messageY = e.getY();
repaint();
}
public void mouseMoved(MouseEvent e) {
}
}
class HelloComponent2 extends JComponent
implements MouseMotionListener
{
String theMessage;
int messageX = 125;
int messageY = 95;
public HelloComponent2( String message ) {
theMessage = message;
addMouseMotionListener(this);
}
public void paintComponent(MouseEvent e) {
// Save the mouse coordinates and paint the message.
messageX = e.getX();
messageY = e.getY();
repaint();
}
//Here it is the method you forgot include in your class
@Override
public void mouseDragged(MouseEvent e) {
}
public void mouseMoved(MouseEvent e) {
}
}
我在编辑器中输入了它,但它给出了错误:
java:15:错误:HelloComponent2不是抽象的,并且不重写MouseMotionListener中的抽象方法mouseDragged(MouseeEvent)
类HelloComponent2扩展了JComponent
^
1错误
我对这种语言是完全陌生的,所以我完全不知道实现甚至意味着什么。。。非常感谢您的帮助 问题是您忘记了在接口
MouseMotionListener
中实现名为mouseDragged(MouseEvent)
的方法。因此,您只需要包含方法,类似于以下内容:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class HelloJava2 {
public static void main( String [] args ) {
JFrame frame = new JFrame( "HelloJava2" );
frame.add( new HelloComponent2("Hello, Java!") );
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
frame.setSize( 300, 300 );
frame.setVisible( true );
}
}
class HelloComponent2 extends JComponent
implements MouseMotionListener
{
String theMessage;
int messageX = 125;
int messageY = 95;
public HelloComponent2( String message ) {
theMessage = message;
addMouseMotionListener(this);
}
public void paintComponent(MouseEvent e) {
// Save the mouse coordinates and paint the message.
messageX = e.getX();
messageY = e.getY();
repaint();
}
public void mouseMoved(MouseEvent e) {
}
}
class HelloComponent2 extends JComponent
implements MouseMotionListener
{
String theMessage;
int messageX = 125;
int messageY = 95;
public HelloComponent2( String message ) {
theMessage = message;
addMouseMotionListener(this);
}
public void paintComponent(MouseEvent e) {
// Save the mouse coordinates and paint the message.
messageX = e.getX();
messageY = e.getY();
repaint();
}
//Here it is the method you forgot include in your class
@Override
public void mouseDragged(MouseEvent e) {
}
public void mouseMoved(MouseEvent e) {
}
}
谢谢你的回答,结果很愚蠢。。。我将参数放在paintComponent中,该参数应该放在不存在的mouseDragged中;(鼠标事件e)而不是(图形g)。。。复制时我一定跳过了它。。。我也不需要@Override,不知道它做什么。欢迎使用@AgustinFitipaldi。建议使用替代注释,其原因将在本节中解释