【问题标题】:MVC Model with GUI Application带有 GUI 应用程序的 MVC 模型
【发布时间】:2023-03-12 19:10:01
【问题描述】:

我创建了一个 Java 应用程序,用于保存一组球员的篮球统计数据。我第一次制作程序时,GUI 元素创建了在同一个类中处理的动作,然后修改了播放器。

我有兴趣按照 MVC 模型重写程序。我假设我需要一个视图或 GUI,然后是一个模型(播放器)和一个控制器。

控制器对我来说很难理解。如何将 GUI 中发生的事情传递给控制器​​?例如,在旧程序中,我有 5 个JComboBoxes,我将有一个Arrayint,以便跟踪活跃玩家。如果以他的名字记录了事件,则当前选择的玩家将更新其统计数据。

我将如何使用 MVC 模型来解决这个问题,我是否需要为每个 Player 提供一个 Controller 实例?

这是旧 GUI 的图片,以便您可以直观地看到程序的工作原理。

感谢您的任何建议。

【问题讨论】:

  • Swing 组件已经是 MVC.. 当您单击按钮时.. 侦听器是控制器,例如 Action 类。
  • 我在旧版本中有一个驱动程序类、一个 GUI 和播放器。一切都被撞到了 GUI 类中,我觉得有更好的方法来做到这一点。但你是说没有?
  • 请参阅this SO question 了解 Java MVC
  • 不,你不想把所有东西都放在一个班级里。 MVC 理念只是一种用于编码的架构/设计

标签: java user-interface model-view-controller model controller


【解决方案1】:

您可以通过多种方式实现 MVC 架构。您可以让控制器成为一个独立的实例并接受模型和视图,而不是为每个玩家(模型)创建一个控制器实例。因此,一种伪代码实现:

playerList = new model();
gui    = new view(playerList);
handles = new controller(playerList, gui);

【讨论】:

  • 所以你会建议模型是玩家列表,而不是单个玩家?
  • @TrevorHutto 不在实施中,但就概括而言,是的。通常,播放器列表是数据库,它包含有关模型实例的数据(每条记录只有一个播放器)
  • @TrevorHutto 换句话说,模型类是 Player。但是您会将模型列表传递给视图
  • 列表会保存在控制器中吗?还是在一个单独的班级?
  • 该列表将保存在您的驱动程序/主类中(编辑:如果您不使用数据库)
猜你喜欢
  • 1970-01-01
  • 2020-08-18
  • 1970-01-01
  • 1970-01-01
  • 2014-07-13
  • 2015-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多