将 MVC 模型与 Swing 应用程序框架结合使用

发布于 2024-08-21 04:48:12 字数 329 浏览 8 评论 0原文

我正在尝试使用 Swing 应用程序框架和 MVC 模型创建一个简单的 Java 桌面应用程序,但我在某些领域遇到了困难,因为缺乏好的示例(我找到的唯一 SAF 示例除了 MVC 之外什么都没有!) 。

我设法从组件中触发事件,但除此之外,我很难将 MVC 模型与 SAF 结合使用。任何地方都有例子吗?

例如,我在查看器中触发一个事件(用 @Action 映射),并将其发送到控制器。但我应该使用哪个功能呢?我的 AbstractController 扩展了 PropertyChangeListener。

如何使用 SAF 进行双向绑定(模型 -> 控制器和视图 -> 控制器)?

I'm trying to create a simple Java desktop application using the Swing Application Framework and the MVC model but I'm struggling on some areas because there is a lack of good examples (the only SAF examples I have found are anything but MVC!).

I manage to fire events from components, but apart from that I struggle to use the MVC model with SAF. Are there any examples anywhere?

For instance, I fire an event (mapped with @Action) in the Viewer which sends it to the controller. But which function should I use? My AbstractController extends PropertyChangeListener.

How do I do the binding with SAF to both directions (model -> controller and view -> controller)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

岛歌少女 2024-08-28 04:48:12

我可以推荐这篇文章:Swing 架构概述

例如,当使用 JTable(视图)时,您可以通过扩展 AbstractTableModel 创建模型,并通过操作和侦听器处理用户事件。

用户可以在 JTextField 中写入一些文本,然后将操作绑定到“Add”-JButton。您的操作实现了actionPerformed(),您可以在模型中调用添加方法来添加文本。在 Add 方法中,您保存数据,然后调用 fireTableRowsInserted(),视图将被更新。

默认情况下,Swing 组件通常包含一个模型和一个视图。

编辑: 抱歉,不了解 Swing 应用程序框架。我的回答只是针对 Swing。

I can recommend this article: A Swing Architecture Overview.

In example, when using JTable (view), you create a model by extending AbstractTableModel, and you handle user-events by Actions and listeners.

A user could write some text in a JTextField, and you bind an Action to an "Add"-JButton. Your Action implement actionPerformed() where you can call an Add-method in the model to add the text. In the Add-method you save the data and then calls fireTableRowsInserted(), and the view will be updated.

Swing components contains often a model and a view by default.

EDIT: Sorry, didn't know about Swing Application Framework. My answer was just addressing Swing.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文