java - 如何创建一个实现 mouseListener 的类

标签 java swing mouselistener

我想创建一个实现 mouseListener 接口(interface)的类(该类将重写所有 mouseListener 方法),而不是重写主类中的所有方法。当我尝试这样做时,出现错误。

这是我的代码:

import javax.swing.*;

public class Game {


    public Game(){
        JFrame frame = new JFrame();
        frame.setSize(500,500);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.addMouseListener(new MyMouseListener());

    }

    public static void main(String[] args) {
        Game app = new Game();
    } 
}

MyMouseListener 代码:

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;



public class MyMouseListener implements KeyListener{

    @Override
    public void keyTyped(KeyEvent e) {
    }

    @Override
    public void keyPressed(KeyEvent e) {

    }

    @Override
    public void keyReleased(KeyEvent e) {

    }


}

编辑:我知道我的问题是我在 MyMouseListener 类中实现了 keyListener 而不是 mouseListener,所以我更改了这一点,MyMouseListener 代码现在是:

public class MyMouseListener extends Game implements MouseListener{



    @Override
    public void mouseClicked(MouseEvent e) {
    }

    @Override
    public void mousePressed(MouseEvent e) {

    }

    @Override
    public void mouseReleased(MouseEvent e) {

    }

    @Override
    public void mouseEntered(MouseEvent e) {

    }

    @Override
    public void mouseExited(MouseEvent e) {

    }


}

最佳答案

您可能遇到的问题是框架未显示,这是因为您没有告诉它显示框架,请使用以下方法:

frame.setVisible(true);

此外,正如 Jorn Vernee 所说,在您的 MyMouseListener 类中,您必须实现 MouseListener 接口(interface)而不是 KeyListener。

我尝试了这段代码,效果很好:

import javax.swing.JFrame;

public class Game {

    public Game(){
        JFrame frame = new JFrame();
        frame.setSize(500,500);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.addMouseListener(new MyMouseListener());
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        Game app = new Game();
    } 
}

MyMouseListener 的代码:

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

public class MyMouseListener implements MouseListener{

    @Override
    public void mouseClicked(MouseEvent e) {
        // TODO Auto-generated method stub
        System.out.println("clicked");
    }

    @Override
    public void mousePressed(MouseEvent e) {
        // TODO Auto-generated method stub

    }

    @Override
    public void mouseReleased(MouseEvent e) {
        // TODO Auto-generated method stub

    }

    @Override
    public void mouseEntered(MouseEvent e) {
        // TODO Auto-generated method stub
    }

    @Override
    public void mouseExited(MouseEvent e) {
        // TODO Auto-generated method stub

    }

}

关于java - 如何创建一个实现 mouseListener 的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38623693/

相关文章:

java - 使用 HashMap 值更新标签

java - 进程运行时在窗口中显示计时器

java - 有没有办法在 java 中创建一个方法来获取有关 JPanel 被单击的内容/信息?

java - 当 GUI 运行时,如何更新 JTextField?

java - 如何使用MouseListener事件

java - 如果我在 java 方法中声明一个变量,那么从声明该变量的方法调用的任何方法是否也可以访问该变量?

java - 如何导入包中的jar文件?

java - 类型参数的遮蔽

java - 小程序顶部的 Jpanel

java - JOptionPane 图标在 Windows 10 中被裁剪