Java MVC-添加MouseListener时出现问题 - java

我是一名Java学生,刚刚结束了一个小型命令行纸牌游戏的基本功能。该游戏是魔术型纸牌游戏的简化版本。没有人工智能,您可以与自己或其他人类玩家对抗。

在这一点上,我试图使用MVC向其中添加一些GUI,但是我发现将MouseListener添加到按钮时遇到问题。

这是对发生的情况的简要说明:

  • 我有一个Model类,该类通过继承超类
  • 来扩展Observable

  • 一个View类,实现Observer
  • 和一个Controller类,用于扩展MouseAdapter
  • 然后我将所有内容放在一起:

    ....
    
    View view = new View();
    Model model = new Model();
    
    model.addObserver( view );
    
    Controller controller = new Controller();
    // associate Controller's Model and View objects
    controller.addModel(model);
    controller.addView(view);
    
    view.addController(controller); // i try to add the MouseListener
    
    ....
    

    View的addController()方法是:

    public void addController(Controller controller){
                this.myButton.addMouseListener( controller )
    }
    

    我已经检查过是否正在调用addController()方法(println在其中的内容),但是由于某些原因未设置侦听器:当我单击按钮时,永远不会调用mouseReleased()

    我可能忽略了任何想法或任何步骤?欣赏。

    编辑(控制器代码):

    public class Controller extends MouseAdapter {
    
        Model model;
        View view;
    
        public void addModel(Model m){
                this.model = m;
        }
    
        public void addView(View ui){
                this.view = ui;
        }
    
        // All @Overrides
    
        @Override
        public void mouseReleased(MouseEvent me) {
            System.out.println("oh, it arrived");
        }
    }
    

    参考方案

    您一定做错了,但是没有代码我不能说什么。
    这是一些有效的简单代码(也许可以帮助您了解自己在做什么错):

        import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.SwingUtilities;
    
    public class Test1 extends JFrame {
    
        public Test1() {
            initUI();
        }
    
        private void initUI() {
            JPanel container = new JPanel();
            container.setLayout(new BorderLayout());
            container.setBackground(Color.black);
    
            JButton b = new JButton("test");
            b.addMouseListener(new Controller());
            container.add(b);
    
            add(container);
            pack();
    
        }
    
        public static void main(String args[]) {
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    Test1 c = new Test1();
                    c.setVisible(true);
                }
            });
        }
    
        class Controller extends MouseAdapter {
            @Override
            public void mouseReleased(MouseEvent me) {
                System.out.println("oh, it arrived");
            }
        }
    
    }
    

    Spring MVC Web应用程序检测暴力攻击的最佳方法? - java

    Spring 3.0 MVC中是否有专门用于帮助检测Web应用程序的身份验证/登录页面上的蛮力攻击的功能? 参考方案 经过长期验证的实践是,如果身份验证失败,则会引入随机但相当大的延迟。这样,合法用户将立即登录,但攻击者每次尝试将花费500ms-1s,这使整个暴力概念不切实际(将永远存在)。合法用户偶尔失败的登录只会使他们稍有延迟,并且不会引起注意。如果需要…

    Java:正则表达式模式匹配器是否有大小限制? - java

    我的模式类似于OR:“word1 | word2 | word3”我大约有800个字。可能有问题吗? 参考方案 您仅受记忆和理智的限制。 :)

    Spring MVC:如何获取请求的处理程序方法 - java

    我正在尝试根据Spring @RequestMapping注释方法上存在的注释实现一些逻辑。因此,我的方法中有一个HttpServletRequest实例,我想问一下spring“给我一个方法,该方法将被调用以处理此请求”,因此我可以使用反射API来询问是否存在我的注释,因此我可以更改处理。有什么简单的方法可以从Spring MVC获取此信息? java大神…

    Java:线程池如何将线程映射到可运行对象 - java

    试图绕过Java并发问题,并且很难理解线程池,线程以及它们正在执行的可运行“任务”之间的关系。如果我创建一个有10个线程的线程池,那么我是否必须将相同的任务传递给池中的每个线程,或者池化的线程实际上只是与任务无关的“工人无人机”可用于执行任何任务?无论哪种方式,Executor / ExecutorService如何将正确的任务分配给正确的线程? 参考方案 …

    将JSON发布到Spring MVC Controller返回400错误请求 - java

    我想发布JSON并让Jackson将其转换为POJO,但是现在我什至无法发布简单的String参数。我正在使用Jackson 2.3.2(jackson-core和jackson-databaind)我正在使用Spring 3.2.8.RELEASE(spring-context,spring-webmvc)我的控制器如下所示:@RequestMapping…