Swing组件都采用MVC设计模式
Swing组件都采用MVC(Model-View-Controller,既模型-视图-控制器)设计模式,从而可以实现GUI组件的显示逻辑和数据逻辑的分离,允许程序员自定义Render来改变GUI组件的显示外观,提供更多的灵活性。
package Com.SwingTest; import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.net.*; public class SwingText_10 extends JFrame {
public SwingText_10() {
setTitle("游戏宝典");
setBounds(, , , );
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
Container container = getContentPane();
// setLayout(null);
setLayout(new BorderLayout());
JPanel p1 = new JPanel();
JPanel p2 = new JPanel();
JLabel bxx = new JLabel("borter right@");
JButton bx1 = new JButton("出装");
JButton bx2 = new JButton("铭文");
JButton bx3 = new JButton("打法");
p2.add(bx1);
p2.add(bx2);
p2.add(bx3);
p1.add(bxx);
this.add(BorderLayout.SOUTH, p1);
bxx.setBackground(Color.white);
Icon i = new ImageIcon("2.jpg");
JLabel l = new JLabel();
l.setIcon(i);
container.add(l);
JMenuBar m = new JMenuBar();
setJMenuBar(m);
// 英雄类型
JMenu m1 = new JMenu("刺客(A)");
JMenu m2 = new JMenu("战士(B)");
JMenu m3 = new JMenu("射手(C)");
JMenu m4 = new JMenu("法师(D)");
JMenu m5 = new JMenu("辅助(E)");
JMenu m6 = new JMenu("坦克(F)");
// 英雄单位
JMenu n1 = new JMenu("那可露露(O)");
JMenu n2 = new JMenu("李白(P)");
JMenu n3 = new JMenu("橘右京(Q)");
JMenu n4 = new JMenu("关羽(O)");
JMenu n5 = new JMenu("赵玉(P)");
JMenu n6 = new JMenu("刘备(Q)");
// 关羽攻略
JMenuItem n31 = new JMenuItem("出装(U)");
JMenuItem n32 = new JMenuItem("铭文(V)");
JMenuItem n33 = new JMenuItem("打法(W)");
// 李白攻略
JMenuItem n21 = new JMenuItem("人生(U)");
JMenuItem n22 = new JMenuItem("技能(V)");
JMenuItem n23 = new JMenuItem("打法(W)");
JMenuItem n24 = new JMenuItem("出装(X)");
JMenuItem n25 = new JMenuItem("铭文(Y)");
JMenuItem n26 = new JMenuItem("选手(Z)"); // 绑定快捷键
n21.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_U, ActionEvent.CTRL_MASK));
n22.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, ActionEvent.CTRL_MASK));
n23.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W, ActionEvent.CTRL_MASK));
n24.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, ActionEvent.CTRL_MASK));
n25.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Y, ActionEvent.CTRL_MASK));
n26.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z, ActionEvent.CTRL_MASK)); // 英雄类型
m.add(m1);
m.add(m2);
m.add(m3);
m.add(m4);
m.add(m5);
m.add(m6);
// 刺客英雄
m1.add(n1);
m1.add(n2);
m1.add(n3);
// 战士英雄
m2.add(n4);
m2.add(n5);
m2.add(n6);
// 关羽攻略
n4.add(n31);
n4.add(n32);
n4.add(n33);
// 李白攻略
n2.add(n21);
n2.add(n22);
n2.add(n23);
n2.add(n24);
n2.add(n25);
n2.add(n26);
// --菜单栏->战士->关羽->出装
n31.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub 铭文
Icon i1 = new ImageIcon("src/关羽经典.png");
JLabel l1 = new JLabel();
l1.setIcon(i1);
Icon i2 = new ImageIcon("src/关羽出装.png");
JLabel l2 = new JLabel();
l2.setIcon(i2);
JDialog dialog = new JDialog();// 创建当前窗体的对话框
dialog.setLayout(new GridLayout(, , , ));
dialog.add(l1);
dialog.add(l2);
dialog.setModal(true);// 设置对话框为模态
dialog.setSize(, );// 设置对话框大小
dialog.setLocationByPlatform(true);// 由系统平台布置窗体位置
dialog.setTitle("关羽出装推荐");// 对话框标题
dialog.setVisible(true);// 显示对话框
}
});
// --菜单栏->战士->关羽->铭文
n32.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub 铭文
Icon i1 = new ImageIcon("src/na.jpg");
JLabel l1 = new JLabel();
l1.setIcon(i1);
Icon i2 = new ImageIcon("src/122.png");
JLabel l2 = new JLabel();
l2.setIcon(i2);
JDialog dialog = new JDialog();// 创建当前窗体的对话框
dialog.setLayout(new GridLayout(, , , ));
dialog.add(l1);
dialog.add(l2);
// dialog.setBackground(Color.gray);
dialog.setModal(true);// 设置对话框为模态
dialog.setSize(, );// 设置对话框大小
dialog.setLocationByPlatform(true);// 由系统平台布置窗体位置
dialog.setTitle("铭文推荐");// 对话框标题
dialog.setVisible(true);// 显示对话框
}
});
// --菜单栏->战士->关羽->打法
n33.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub 铭文
Icon i1 = new ImageIcon("2.jpg");
JLabel l1 = new JLabel();
l1.setIcon(i1);
Icon i2 = new ImageIcon("2.jpg");
JLabel l2 = new JLabel();
l2.setIcon(i2);
JDialog dialog = new JDialog();// 创建当前窗体的对话框
dialog.setLayout(new GridLayout(, , , ));
dialog.add(l1);
dialog.add(l2);
dialog.setModal(true);// 设置对话框为模态
dialog.setSize(, );// 设置对话框大小
dialog.setLocationByPlatform(true);// 由系统平台布置窗体位置
dialog.setTitle("铭文推荐");// 对话框标题
dialog.setVisible(true);// 显示对话框
}
}); setVisible(true);
} public static void main(String[] args) {
new SwingText_10();
}
}
Swing组件都采用MVC设计模式的更多相关文章
- ASP.NET下MVC设计模式的实现
[转载]MVC架构在Asp.net中的应用和实现 转载自:http://www.cnblogs.com/baiye7223725/archive/2007/06/07/775390.aspx 摘要:本 ...
- MVC设计模式((javaWEB)在数据库连接池下,实现对数据库中的数据增删改查操作)
设计功能的实现: ----没有业务层,直接由Servlet调用DAO,所以也没有事务操作,所以从DAO中直接获取connection对象 ----采用MVC设计模式 ----采用到的技术 .MVC设计 ...
- 请求转发:MVC设计模式、细节、请求域属性的编程实例、请求重定向和请求转发的区别
请求转发:MVC设计模式.细节.请求域属性的编程实例.请求重定向和请求转发的区别 MVC设计模式将一次请求的响应过程分成三个功能模块(一般称之为层)来协同完成,这三个模块分别是Model(模型层) ...
- ASP.NET Core MVC 设计模式 - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core MVC 设计模式 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core MVC 设计模式 上一章节中,我们提到 ASP.NET Co ...
- MVC设计模式在网站中的应用
MVC设计模式在网站中的应用 以淘宝的购物车为例 一.结合六个基本质量属性 可修改性 采用MVC设计模式的时候,可以将视图.模型.控制器分析,将用户动作.数据表示.应用数据分离开来,如果用户需要以不同 ...
- 谈谈JAVA工程狮面试中经常遇到的面试题目------什么是MVC设计模式
作为一名java工程狮,大家肯定经历过很多面试,但每次几乎都会被问到什么是MVC设计模式,你是怎么理解MVC的类似这样的一系列关于MVC的问题. [出现频率] [关键考点] MVC的含义 MVC的结构 ...
- 详解MVC设计模式
1 MVC介绍 众所周知MVC不是设计模式,是一个比设计模式更大一点的模式,称作设计模式不合理,应该说MVC它是一种软件开发架构模式,它包含了很多的设计模式,最为密切是以下三种:Observer (观 ...
- (转)MVC设计模式学习总结
原文 : chenchun的博客 http://www.cnblogs.com/jobscn/archive/2011/11/08/2240725.html -------------------- ...
- MVC设计模式
随着Web应用的商业逻辑包含逐渐复杂的公式分析计算.决策支持等,使客户机越 来越不堪重负,因此将系统的商业分离出来.单独形成一部分,这样三层结构产生了. 其中‘层’是逻辑上的划分. 三层体系结构是将整 ...
随机推荐
- DevExpress控件之"XtraForm——窗体"
1.AutoScaleMode:确定当屏幕分辨率或字体更改时窗体或控件将如何缩放. Dpi:根据显示分辨率控制缩放.常用分辨率为96和120Dpi: Font:根据类使用的字体(通常为系统字体)的维度 ...
- Latex 环境下“中文字体”的使用
Latex 环境下“中文字体”的使用 使用CTex自带编辑器WinEdt,在该环境下如何使用中文字体呢?作为一个菜鸟,折腾了好几天,最终基本解决了这个问题.现在整理下,分享给后来者. 对于使用中文字体 ...
- 【转】input file accept属性可以限制的文件类型
来源:http://blog.sina.com.cn/s/blog_6c9d65a10101a8yh.html 在上传文件的时候,需要限制指定的文件类型. <input type="f ...
- modelsim与debussy联调环境的搭建
为了方便查看波形,找来了一款软件——debussy,它的一个优点是任你查看设计内信号,只需一个波形文件,如FSDB文件.而不用像modelsim那样想看某些信号,添加了之后还要重新编译仿真,浪费了很多 ...
- webBench&ad网站并发测试工具
webBench 测试工具使用,网站上线前压力测试工具. ad测试工具
- [svc][op]Ubuntu优化-服务管理(启动级别)
一 修改Ubuntu启动级别 sudo apt-get install sysv-rc-conf 执行: sysv-rc-conf 打x的表示开机启动. 二 启动级别 Ubuntu默认启动级别为2 r ...
- [sh]sed 4个功能
[root@lanny test]# cat test.txt test liyao lanny 经典博文: http://oldboy.blog.51cto.com/2561410/949365 h ...
- 【Android】12.0 第12章 Intent及其过滤器—本章示例主界面
分类:C#.Android.VS2015: 创建日期:2016-02-23 一.简介 这一章我们主要学习Intent的基本用法,并通过例子演示如下功能: 如何启动另一个界面: 如何获取另一个界面的返回 ...
- mac下borderless的window(无标题栏)如何实现
子类化NSWindow: - (void)awakeFromNib { [selfsetStyleMask:NSBorderlessWindowMask]; [selfsetAcceptsMouseM ...
- SQLAlchemy的“缓存”问题导致的BUG
问题描述: 最近做项目,遇到一个问题,两个项目操作同一个数据库,其中A项目用的pymysql链接操作数据库,B项目用的sqlalchemy,当我请求B项目中的一个接口,会通知A项目操作数据库,然后返回 ...