gpt4 book ai didi

Java MVC - 添加 MouseListener 时出现问题

转载 作者:搜寻专家 更新时间:2023-11-01 02:49:56 24 4
gpt4 key购买 nike

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

此时,我正在尝试使用 MVC 添加一些 GUI,但我发现在将 MouseListener 添加到按钮时出现问题

这是对正在发生的事情的简要解释:

  • 我有一个 Model 类,它通过继承父类(super class)来扩展 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() 方法(打印其中的内容),但由于某种原因没有设置 Listener:mouseReleased() 是单击按钮时从未调用过。

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

编辑( Controller 代码):

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");
}
}

}

关于Java MVC - 添加 MouseListener 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13217684/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com