`

swing学习 - MVC体系理解

    博客分类:
  • JAVA
阅读更多

      mvc在显示中采用架构是从smalltalk开始的,mvc体现的是一种将数据,展示和控制分离的模式,这种是一种优秀的模式,包括当前的web界面的开发也采用了这种模式,成为了一种非常普遍的模式。Swing使用的是一个变体的MVC架构。

 

      Swing GUI组件采用了mvc模式,包括至少三个对象:一个Component,一个Model和一个UI Delegate,Model负责存储数据,UI Delegate负责从Model获取数据并渲染到屏幕上去,Component通常协调Model和Delegate之间的操作,并同时负责将 Swing嵌入到AWT窗口系统中。

 

      对于比较复杂的对象,比如JTable,Jlist等可能存在成千上万数据的对象,单纯但用这种模式也不方便进行数据的处理,为了处理这种情况,swing引入了渲染器的概念,他是对象一个不可见的,用来复用的对象 。按照正常的显示逻辑,对于JTable的每一个单元格的对象我们会实例化一个对象实例,然后进行展现,这样造成对象的爆炸,内存会大量被占用。采用了渲染器模式以后,在对象中存在一个公用的展现的对象,在使用的时候会从数据model中读取数据,然后采用这一个渲染器进行显示渲染,等渲染完成以后,仍然使用这个渲染器渲染下一个数据,这样大大降低了对象的数量,当然也节约了空间。下面一个简单的BasicTableUi中的代码作为实例

 

       //这部分主要是用来渲染单元格,直接采用取得渲染器

        TableColumn tableColumn = getColumnModel().getColumn(column);
        TableCellRenderer renderer = tableColumn.getCellRenderer();

 

     //列中的渲染器直接由外界传递进来的。

 

 

除了渲染器还有一个需要主要提高效率的地方,请分析下面的二段代码,应该写哪一个

 

代码一:

  1. JComboBox box = new JComboBox();   
  2. for (int i = 0; i < numItems; i++) {   
  3.     box.addItem(new Integer(i));   

代码二:

  1. Vector v = new Vector(numItems);   
  2. for (int i = 0; i < numItems; i++) {   
  3.    v.add(new Integer(i));   
  4. }   
  5. ComboBoxModel model = new DefaultComboBoxModel(v);   
  6. JComboBox box = new JComboBox(model); 

我渲染的当然是方法二了。第一段代码非常清晰,就是给下拉列表添加数据,按照正常的API进行,这样如果数据量不大,没有问题,需要考虑了,时间会很长,因为他每次添加一个就会提示变化事件,进行一次显示逻辑,非常的浪费资源。第二种模式将数据全部补充好了,一次性的进行提醒,节约了处理的时间,也是非常好的提高效率的方式。

 

 

 

编写swing程序,需要从cpu和内存二个方面对于程序进行优化。

分享到:
评论
1 楼 keke8614 2011-03-02  
JTable是视图层还是控制层啊,能不能用JTable组件详细讲解下他们之间如何协同工作的》??????不胜感激

相关推荐

    JavaSwing学习资料

    在JavaSwing学习资料中,你将获得深入理解这个强大的GUI库所需的知识。初学者通过学习这些资料,可以掌握如何创建美观且功能丰富的桌面应用程序。 1. **Swing基础** - **组件体系结构**:Swing组件基于轻量级/重型...

    深入学习:JFC Swing

    在深入学习JFC Swing的过程中,我们需要理解以下几个核心概念和知识点: 1. **组件体系结构**: Swing组件基于Java AWT(Abstract Window Toolkit)之上,但比AWT更加轻量级。Swing组件是完全由Java实现的,因此...

    swing-workbench

    通过分析Swing工作台的源码,开发者不仅可以学习到如何用Swing构建复杂的GUI,还能理解如何实现类似Eclipse的可定制工作环境。这对于那些希望创建自己的桌面应用,尤其是开发工具或者集成环境的开发者来说,是非常有...

    一个采用Java Swing和MySQL的桌面应用程序,具有MVC体系结构,并为学生、教师和管理员提供三个用户仪表板.zip

    这个项目是一个基于Java Swing的桌面应用程序,它充分利用了Model-View-Controller(MVC)...开发者可以通过此项目学习如何构建复杂且功能丰富的桌面应用,同时理解和运用MVC设计模式,以及如何与数据库进行有效交互。

    Java中Swing的相关知识(1)

    - **灵活性和扩展性**:Swing组件遵循MVC(Model-View-Controller)设计模式,使得界面更加灵活和易于维护。 #### 二、Swing的类层次结构 Swing的类层次结构非常丰富,下面详细介绍其中的主要组成部分。 ##### ...

    Swing,AWT.J2SE 学习帮助文档

    在学习Swing时,你需要理解其组件体系结构,包括JFrame、JPanel、JButton等基本组件,以及如何通过布局管理器(如FlowLayout、BorderLayout、GridLayout和GridBagLayout)来控制组件的排列方式。Swing还引入了模型-...

    Swing用户界面设计

    Swing采用MVC(Model-View-Controller)设计模式,分离了数据、显示和用户交互,提高了代码的可维护性和可扩展性。 Swing的一个显著特点是可插入的外观感觉(Pluggable Look and Feel,PL&F),允许用户在不同平台...

    Manning - Java Swing 2nd Edition

    5. **模型-视图-控制器(MVC)设计模式**:理解Swing组件如何应用MVC模式,以及如何通过分离业务逻辑和用户界面来实现更灵活的代码结构。 6. **高级组件**:探索JTable、JTree、JList等高级组件,学习如何展示数据...

    Java Servlets和java swing

    1. **组件体系**:Swing包括各种组件,如JButton、JLabel、JFrame、JTable等,满足不同功能需求。 2. **事件处理**:Swing使用事件监听器模型,通过`addActionListener()`等方式添加监听器处理用户交互。 3. **布局...

    基于MVC模式的java实现

    1. **分离关注点**:模型、视图和控制器的职责明确,各司其职,使得代码易于理解和维护。 2. **可重用性**:视图和模型可以独立工作,视图可以使用不同的模型,模型也可以被多个视图共享。 3. **测试友好**:由于...

    swing 应用框架 1.3 英文版 API

    这个API文档通常包含了详细的类、接口、方法和属性的说明,帮助开发者更好地理解和使用Swing库。 Swing库的核心概念是组件(Components),这些组件包括按钮(JButton)、文本框(JTextField)、菜单(JMenu)等,...

    Java swing 完全完整实例

    这个“Java Swing 完全完整实例”很可能是包含了一系列使用Swing开发GUI程序的示例代码,帮助开发者深入理解和实践Swing的各种组件和功能。 Swing 提供了丰富的组件集,包括按钮、文本框、标签、滚动面板、菜单、...

    Java Swing桌面开发经典案例

    这个"Java Swing桌面开发经典案例"集合包含超过200个可运行的示例,为学习和理解Swing提供了丰富的资源。下面,我们将深入探讨Java Swing的一些核心概念和关键组件,以及如何利用这些案例来提升你的Swing开发技能。 ...

    Java学习体系结构

    14. **MVC框架**:学习Struts、Spring框架,理解其工作原理和应用场景,提升企业级应用开发能力。 15. **ORM框架**:Hibernat是Java中常用的ORM框架,学习其映射关系和数据操作,减轻数据库操作的复杂性。 16. **...

    Java Swing 教程

    - **设计模式**:Swing 采用了 MVC(Model-View-Controller)设计模式,这种模式将应用分为三个部分:数据模型(Model)、视图(View)和控制器(Controller),分别负责数据管理、用户界面展示和用户交互逻辑处理。...

    jdk_swing_源码实现分析

    2. **模型-视图-控制器(MVC)设计模式**:Swing遵循MVC模式,将组件的数据(模型)、显示(视图)和用户交互(控制器)分离,使得代码更加模块化。例如,JTable组件就包含一个TableModel来存储数据,一个...

    Java Swing图形界面

    2. Model-View-Controller(MVC)设计模式:Swing遵循MVC模式,每个组件都有一个模型(Model),表示数据;一个视图(View),负责显示;一个控制器(Controller),处理用户交互。 3. 国际化支持:Swing内置了对多...

    java2 Swing源码

    2. **模型-视图-控制器(MVC)设计模式**:Swing组件遵循MVC设计模式,其中模型存储数据,视图负责显示,而控制器处理用户交互。例如,JTable组件的模型是TableModel,视图是DefaultTableColumnModel,控制器则包括...

Global site tag (gtag.js) - Google Analytics