java - 为什么 MouseListener 不起作用?

标签 java swing mouse mouselistener jmenuitem

这是我的主要类(class):

import javax.swing.*;

public class WordProcessor {

    public static void main(String[] args) {           
        MainFrame frame = new MainFrame("Word Processor", 10000, 10000);
    }
} 

我还有另外两门课

import javax.swing.*;

public class MainFrame extends JFrame {

    JMenuBar menubar = new JMenuBar();            

    public MainFrame(String name, int x, int y) {
        setTitle(name);
        setSize(x, y);
        setVisible(true);
        setJMenuBar(menubar); 
        //creates file menu and adds to menubar
        //TODO populate with JMenuItems 
        JMenu filemenu = new JMenu("file");
        filemenu.setVisible(true);
        menubar.add(filemenu);

        buttonnew buttonnew = new buttonnew("new");
        buttonnew.setVisible(true);
        filemenu.add(buttonnew);
        buttonnew.addMouseListener(buttonnew);
    }
}

最后

import javax.swing.*;
import java.awt.event.*;

public class buttonnew extends JMenuItem implements MouseListener{

    buttonnew(String s) {
          super();
          super.setText(s);        
    }

    public void mouseClicked(MouseEvent e){         
          System.out.println("hey-o");
    } 

    @Override
    public void mouseExited(MouseEvent e) {
    }

    public void mouseEntered(MouseEvent e) {
    }

    public void mouseReleased(MouseEvent e) {
    }

    public void mousePressed(MouseEvent e) {
    }        
}

当我点击按钮neẅ时没有任何反应。我迷失了!

最佳答案

解决方案:

  1. 不要将 MouseListener 与 JMenuItem 一起使用!他们应该使用 ActionListener。
  2. 使用新工具时请阅读教程。 Swing 菜单教程已经告诉您所有这些以及如何正确使用菜单。
  3. 此外,最好不要让 GUI 类实现监听器接口(interface),因为您会强制一个类执行过多的操作,从而违反 Cohesion OOP 规则。

关于java - 为什么 MouseListener 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16995790/

相关文章:

ms-access - 阻止 Access 外部 ActiveX 控件中的鼠标滚轮行为

java - 如何在 libGDX 中绘制填充多边形周围的精确边框?

java - 如何在 Spring Roo 中使用 JUnit 测试? (EntityManager 的问题)

java - 在 Java JNI 编程中使用 std::string 时的性能和内存使用情况

java - Swing 导航 - 基本

javascript - 在 Javascript 中检测 FireFox 的鼠标按钮

java - volatile Thread 不等于 Thread.currentThread

java - 在 JDialog 中放弃控制

java - 如何通过迭代具有数组值的 for 循环来填充 JTable

java - 如何在Java中获取窗口外的鼠标点击坐标