Swing的MVC结构
--------------siwuxie095
工程名:TestMVC
包名:com.siwuxie095.mvc
类名:Test.java
工程结构目录如下:

代码:
|
package com.siwuxie095.mvc; import java.awt.BorderLayout; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import javax.swing.JList; import javax.swing.AbstractListModel; import javax.swing.event.ListSelectionListener; import javax.swing.event.ListSelectionEvent; /** * 先在中间添加一个 JList 表单 * 给这个 JList 的 model 选项添加 A、B、C、D、E、F * 最后给这个 JList 添加监听事件 * * @author siwux * */ /* * MVC结构: * Model(模型)+View(视图)+Control(控制) * * M:存储一些相关的数据 * V:表达视觉元素 * C:负责它们之间的相互关系,执行程序逻辑和程序的走向 * */ public class Test extends JFrame { private JPanel contentPane;
//将 JList 的声明转移到类中,以便于在监听器中进行访问 JList list;
/** * Launch the application. */ public static
EventQueue.invokeLater(new Runnable() { public try { Test frame = new Test(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public Test() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 450, 300); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); contentPane.setLayout(new BorderLayout(0, 0)); setContentPane(contentPane);
//new 出来的是 JList 是 list = new JList(); list.addListSelectionListener(new ListSelectionListener() {
//监听事件---监听器(Control) public
//e.getValueIsAdjusting()==true 表示是在点击鼠标的时候打印, //如果改成false就表示是在松开的时候打印 //如果没有这个 if 判断,会打印两次 //点击鼠标和松开鼠标都会造成状态的改变,导致方法的二次调用 //先点住鼠标不放,而后慢慢松开就会发现该打印效果 if (e.getValueIsAdjusting()==true) { //在控制台输出选择值 //每当点击列表时,只要选项值发生变化,就会自动触发监听器 System.out.println(list.getSelectedValue()); }
} });
//setModel() 则是模型,是数据模型(Model) list.setModel(new AbstractListModel() { String[] values = new String[] {"A", "B", "C", "D", "E", "F"}; public return values.length; } public Object getElementAt(int index) { return values[index]; } }); contentPane.add(list, BorderLayout.CENTER); } } |
运行一览:

如果点击 A B C,控制台会相应输出:

程序的实现:
View:在
Design 界面,将 JList 拖到 contentPane 的中间

Model:点击
JList 的 model 属性,为其添加 A B C D E F


Control:给
JList 添加事件监听,右键->Add event handler->listSelection->valueChanged

Design 界面操作完成后,对应的 Source 界面会自动生成相应的代码,
对这些代码进行增删改 … 即可
【made by siwuxie095】
Swing的MVC结构的更多相关文章
- MVC结构
MVC结构是其它三个经典的设计模式的演变:观察者模式(Observer)(Pub/Sub), 策略模式(Strategy)和组合模式(Composite). 来自为知笔记(Wiz)
- ExtJS MVC结构
概述 大型的应用在开发和运维上都存在着困难.应用功能的调整和开发人员的调动都会影响对项目的掌控.ExtJS4带来了一种新的应用结构.这种结构不止用于组织代码,也能有效的减少必要的代码量. 这次ExtJ ...
- 关于MVC结构
简单的记录,只是想记录一下现在对MVC的理解. MVC,即模型(MODEL),视图(VIEW),控制器(CONTROLLER) 模型是数据模型 视图是图形界面 控制器是在两个之间的控制部分,用来将数据 ...
- 更加清楚理解mvc结构
更加清楚理解mvc结构 文章来源:刘俊涛的博客 地址:http://www.cnblogs.com/lovebing 欢迎关注,有问题一起学习欢迎留言.评论.
- discuz X论坛技术架构 MVC结构浅析
摘自:http://yeyuan.iteye.com/blog/930727 PS:本人刚接触discuz论坛,php水平有限,当中的理解,如有不正确之处,欢迎指出 ----------------- ...
- php源码建博客4--实现MVC结构微型框架
主要: 常量优化路径 自动加载类 优化入口文件 安全访问项目目录 --------------文件结构:-------------------------------------- blog├─App ...
- php源码建博客3--区分平台的MVC结构
主要: 模型单例工厂 目录结构优化 区分平台(前台,后台....) --------------文件结构:-------------------------------------- blog├─Ap ...
- php源码建博客2--实现单入口MVC结构
主要: MVC目录结构 数据库工具类制作 创建公共模型类和公共控制器类 --------------文件结构:-------------------------------------- blog├─ ...
- MVC结构简介
本文编译自J2EE的相关文档.MVC(Model-View-Controller)应用程序结构被用来分析分布式应用程序的特征.这种抽象结构能有助于将应用程序分割成若干逻辑部件,使程序设计变得更加容易. ...
随机推荐
- 51nod 1255 贪心/构造
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1255 1255 字典序最小的子序列 题目来源: 天津大学OJ 基准时间限 ...
- NAT123之类的软件是如何实现访问域名然后穿透到内网主机的80端口?——有公网ip就是动态域名解析,没有就是穿透+代理转发
实际上两种都用到了:1,服务提供商(123NAT,花生壳)做Proxy转发 2,两个私网地址直接连接:STUN 和TURN 使用动态域名解析还是端口映射 什么情况下使用动态域名解析?什么情况下使用 ...
- BW信息STMS传输
项目时先接过来的.前面的人建了很多数据源,信息对象.我也建了不少.最后分成三个包.非常混乱,信息对象不在一个包里.导入报错.先后顺序也没有逻辑.可为难我了. 本来想着是全部释放掉,然后在传输连接收集自 ...
- 三张图较为好理解JavaScript的原型对象与原型链
最近从网上看到别人详细得讲解了js的原型对象和原型链,看完感觉是看得最清晰的一个,于是,摘录到自己博客里 对于新人来说,JavaScript的原型是一个很让人头疼的事情,一来prototype容易与_ ...
- vue项目打包注意的地方
打包有两种方式: 第一种方式:1.更改config文件夹下prod.env.js下的地址: 2.将config文件夹下index.js中build下改为 assetsPublicPath: '', 第 ...
- Linux命令学习(19):ping命令
版权声明 更新:2017-06-13博主:LuckyAlan联系:liuwenvip163@163.com声明:吃水不忘挖井人,转载请注明出处! 1 文章介绍 本文介绍了Linux下面的ping命令. ...
- 数字排列(n,m)(搜索与回溯)
题目描述: 设有n个整数的集合{1,2,…,n},从中取出任意r个数进行排列(r<n),试列出所有的排列. 代码如下: #include<iostream>#include<c ...
- swing之borderlayout
import java.awt.BorderLayout; import javax.swing.JButton; import javax.swing.JFrame; //1.继承 JFrame类 ...
- Oracle存储过程创建及调用
在大型数据库系统中,有两个很重要作用的功能,那就是存储过程和触发器.在数据库系统中无论是存储过程还是触发器,都是通过SQL 语句和控制流程语句的集合来完成的.相对来说,数据库系统中的触发器也是一种存储 ...
- C# 使用API检查域用户名和密码是否正确
添加引用: using System.Runtime.InteropServices; public class VerifyUserByDomain { ; ; ); [DllImport(&quo ...