--------------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
void main(String[] args) {

 

 

 

EventQueue.invokeLater(new Runnable() {

public
void run() {

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 是
视图(View)

list = new JList();

list.addListSelectionListener(new ListSelectionListener() {

 

//监听事件---监听器(Control)

public
void valueChanged(ListSelectionEvent e) {

 

//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
int getSize() {

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结构的更多相关文章

  1. MVC结构

    MVC结构是其它三个经典的设计模式的演变:观察者模式(Observer)(Pub/Sub), 策略模式(Strategy)和组合模式(Composite).   来自为知笔记(Wiz)

  2. ExtJS MVC结构

    概述 大型的应用在开发和运维上都存在着困难.应用功能的调整和开发人员的调动都会影响对项目的掌控.ExtJS4带来了一种新的应用结构.这种结构不止用于组织代码,也能有效的减少必要的代码量. 这次ExtJ ...

  3. 关于MVC结构

    简单的记录,只是想记录一下现在对MVC的理解. MVC,即模型(MODEL),视图(VIEW),控制器(CONTROLLER) 模型是数据模型 视图是图形界面 控制器是在两个之间的控制部分,用来将数据 ...

  4. 更加清楚理解mvc结构

      更加清楚理解mvc结构 文章来源:刘俊涛的博客 地址:http://www.cnblogs.com/lovebing 欢迎关注,有问题一起学习欢迎留言.评论.

  5. discuz X论坛技术架构 MVC结构浅析

    摘自:http://yeyuan.iteye.com/blog/930727 PS:本人刚接触discuz论坛,php水平有限,当中的理解,如有不正确之处,欢迎指出 ----------------- ...

  6. php源码建博客4--实现MVC结构微型框架

    主要: 常量优化路径 自动加载类 优化入口文件 安全访问项目目录 --------------文件结构:-------------------------------------- blog├─App ...

  7. php源码建博客3--区分平台的MVC结构

    主要: 模型单例工厂 目录结构优化 区分平台(前台,后台....) --------------文件结构:-------------------------------------- blog├─Ap ...

  8. php源码建博客2--实现单入口MVC结构

    主要: MVC目录结构 数据库工具类制作 创建公共模型类和公共控制器类 --------------文件结构:-------------------------------------- blog├─ ...

  9. MVC结构简介

    本文编译自J2EE的相关文档.MVC(Model-View-Controller)应用程序结构被用来分析分布式应用程序的特征.这种抽象结构能有助于将应用程序分割成若干逻辑部件,使程序设计变得更加容易. ...

随机推荐

  1. ZOJ - 3430 ac自动机

    这题主要就是解码过程很恶心,不能用char存,一共wa了20发 题意:先给n串加密后的字符,然后m串加密后的字符,解码之后求n对应每个m的匹配数,很显然的ac自动机 加密过程是先用对应ascii表的标 ...

  2. Spring MVC数据绑定大全 .

    刚开始用spring mvc 做web开发时,经常会不知道如何合适绑定页面数据.用惯struts2的朋友更认为spring mvc 绑定数据不如struts2方便(本人最开始也是这么认为),经过一段时 ...

  3. VSCode设置中文语言显示

    Vscode是一款开源的跨平台编辑器.默认情况下,vscode使用的语言为英文(us),如何将其显示语言修改成中文了? 1)打开vscode工具: 2)使用快捷键组合[Ctrl+Shift+p],在搜 ...

  4. 用node.js可以开启静态服务 不需要借助apache 或者xampl

    安装好了Node以及express,然后用express命令生成express架构, 目录结构下面有一个public页面, 把你的静态页面放到这个文件夹下, 通过npm start,开启服务就可以在浏 ...

  5. mysql 库,表,数据操作

    一 系统数据库 information_schema: 虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息.列信息.权限信息.字符信息等performance_schema: MyS ...

  6. commons-dbcp连接池的使用

    数据库连接池 池参数(所有池参数都有默认值): 初始大小: 最小空闲连接数: 增量:一次创建的最小单位(5个) 最大空闲连接数:12个 最大连接数:20个 最大的等待时间:1000毫秒 四大连接参数: ...

  7. PhotoShop使用指南(1)——动态图gif的制作

    第一步:菜单栏 > 窗口 > 工作区 > 动感 第二步:时间轴 > 设置延迟时间 第三步:时间轴 > 设置循环次数 第四步:存储为Web所用格式 Ctrl+Shift+A ...

  8. RTP协议全解(H264码流和PS流)

    写在前面:RTP的解析,网上找了很多资料,但是都不全,所以我力图整理出一个比较全面的解析, 其中借鉴了很多文章,我都列在了文章最后,在此表示感谢. 互联网的发展离不开大家的无私奉献,我决定从我做起,希 ...

  9. 在Windows 7上安装ACE 6.1.0

    主机环境    操作系统:Windows 7 专业版准备ACE    用浏览器打开http://download.dre.vanderbilt.edu/,下载ACE-6.1.0和ACE-html-6. ...

  10. BZOJ1280: Emmy卖猪pigs

    BZOJ1280: Emmy卖猪pigs https://lydsy.com/JudgeOnline/problem.php?id=1280 分析: 这题感觉还好,因为是有时间顺序,所以拆点做最大流即 ...