Swing组件如何实现MVC架构?
假设我有一个 JTextfield 。仅仅这个JTextfield是如何实现MVC架构的呢?
Suppose I have a JTextfield . How does only this JTextfield implement an MVC architecture?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
所有 Java Swing 组件都使用 MVC,尽管从 API 中并不总是清楚的。每个组件都有一个控制器、模型和视图。 JTextField、JButton 等都是控制器。它们还都支持包含组件状态的 getModel()。许多 swing API 通过便捷的方法污染了控制器 api,因此这并不总是显而易见的。 JTextField 中显示的文本实际上保存在模型中。 textField.getText() 和 textField.setText() 实际上是为了方便您,它们真正做的是 textField.getModel().getText() 和 textField.getModel().setText()。
对于视图,有一个 UI getComponentUI()。这是由模型触发的 propertyChanges 更新的。 ComponentUI 可以让不同的 L&F 轻松开发。
All Java Swing components use MVC though its not always clear from the api. For each component there is a Controller, Model and View. JTextField, JButton, etc.. are all the Controllers. They also all support a getModel() which contains the state of the component. A lot of swing API pollute the controller api with convience methods so this is not always obvious. The text displayed in a JTextField is actually saved in the model. textField.getText() and textField.setText() are actually there for your convienence, what they really are doing is textField.getModel().getText() and textField.getModel().setText().
For the view there is a UI getComponentUI(). This is updated by propertyChanges fired from the Model. The ComponentUI is what lets different L&Fs be developed easily.
文档就是模型。
除此之外,JTextField 与任何其他 Swing 组件一样实现 MVC。
The Document is the Model.
Other than that a JTextField implements MVC the same as any other Swing component.