11-Java 界面设计
(一)Java界面设计概述
1、Java 界面设计的用途
2、AWT 简介
(1)Abstract Windows Toolkit 是最原始的工具包。
3、Swing 简介
4、SWT 简介
5、如何选择 GUI 工具包(以上三个都是)
Swing 是最灵活、强大的GUI工具包,所以在界面开发中,首选Swing。
只有一种场合不适用于Swing:
在使用SWT开发的程序上继续编写界面,比如为Eclipse 开发插件(因为Ecilpse 是基于SWT构建的)。SWT与Swing 不兼容,他们不能混合使用。
(二)Swing 框架的基本结构
1、Swing 框架的继承关系
2、Swing 的 MVC 结构
创建一个新的工程,名为TestMVC。在src 里面 new 一个 (最后的other 的windowbuilder
的Swing
Designer 的JFrame 。名为Test )。会出现一些代码,属于底下的Source,旁边的Design 即可设计。
MVC :Model View
Control 模型(存储相关的数据)+视图(表达视觉元素)+控制(负责他们之间的相互关系以及执行一些程序的逻辑和程序的真实走向)。
3、Swing的事件机制
(三)Swing基本组件
1、WindowBuilder 的安装与简介
2、窗体控件 JFrame 的使用
3、容器控件 JPanel 的使用
4、标签控件 JLabel 的使用
5、按钮控件 JButton 的使用
6、文本框控件 JTextField 与 JTextArea 的使用
JTextField :文本框,只能输入一行
JTextArea:文本区域,可输入多行
7、单选与复选控件 JRadioButton 与 JCheckBox 的使用
单选在描写代码的时候,if语句要用else。而复选则应该用相互独立的若干个if
8、列表控件 JList 的使用
9、下拉菜单 JComboBox 的使用
10、进度条控件 JProgressBar 的使用
11、数字调节控件 JSpinner 的使用
12、Swing 界面组件的通用属性
(四)Swing 布局管理器
1、Absolute Layout绝对布局
没有任何限制,可以在窗口界面中任意摆置控件
2、Flow Layout浮动布局
可以浮动,但不是相互叠加。指大小在发生变化的时候,它们的相对位置可以改变。
3、Border Layout边界布局
这是默认的布局。任意拖拽一个按钮啊控件,即可显示,如下:共5个边界。

4、Grid Layout网格布局
平均分!
5、Group Layout分组布局
是Swing 中最强大的布局管理器,非常灵活、动态,支持元素对齐、边界吸附、控件的动态大小调整。
(五)自定义Swing组件
1、Swing 的绘图机制·
2、Swing 绘图 API
3、使用 Java2D 改善 API 的绘制效果
4、使用绘图API自定义组件
5、为组件设定UI
6、使用 LookAndFeel 为界面更换皮肤
(六)Swing菜单的使用
1、界面菜单简介
2、窗体菜单栏的创建与使用
新建一个JFrame。Design 、在左侧选择“menu”:里面有~~~
JMenu 和 JMenuitem 的区别:前者包含后者,后者不可再分。
3、弹出菜单的创建与使用
4、为MacOSX系统优化菜单栏
(七)Swing界面响应与线程安全
1、主线程与UI线程简介
(1)Java 程序的主线程
当Java 程序启动时,一个线程立刻运行,该线程通常叫做程序的主线程(main
thread),因为它是程序开始时就执行的。一般来说,该类中会有一个main 函数,当程序启动时,该函数就会第一个自动地得到执行,并成为程序的主线程。主线程的特征如下:
A、它是产生其他子线程的线程
B、主线程中执行程序的控制
C\、通常它必须最后完成执行,因为它执行各种关闭动作。
【永远不在主线程中操作界面】
2、UI线程中非安全操作与安全操作
Swing API 的设计目标是强大、灵活和易用。但是Swing 组件不支持多线程访问,程序要操作或更改界面内容,必须向单一线程执行请求,我们把这个单一的线程称为事件派发线程(可简称为UI线程)。这也就意味着Swing
是线程不安全的,所有对于UI元素的修改都必须提交给UI线程执行,你不能在主线程或其他任何线程中直接操作UI的内容。
如果需要从UI线程或绘制代码以外的地方访问UI,那么你需要使用SwingUtilities;类的invokeLater() 或InvokeAndWait()方法。
如果你需要处理一些耗费大量计算能力或受I/O能力限制的工作,可以使用一个线程工具类如SwingWorker 或Timer。
3、使用Timer为界面执行异步任务
4、使用SwingWorker为界面执行异步任务
(八)界面消息提示
1、JoptionPane 简介
2、使用 showConfirmDialog 显示确认框
3、使用 showMessageDialog 显示消息提示框
4、使用 showInputDialog 显示输入框
5、使用 showOptionDialog 显示多项选择框.
(九)Java文件选择器
1、JFileChooser简介
2、使用文件选择器打开文件
3、使用文件选择器保存文件
4、为文件选择器设定扩展名过滤
(十)Java视频播放器的制作
1、工程的准备
2、工程创建与配置
3、制作主界面
4、制作视频控制器
5、制作菜单栏
6、添加音量控制组件
7、导出程序
11-Java 界面设计的更多相关文章
- Java界面设计 Swing(1)
Java界面设计的用途 开发者可以通过Java SE开发丰富并且强大的具有图形界面的桌面应用程序.也可以设计一些提高效率的工具软件,帮助自己处理机械性工作. Java 的图形界面工具包,可以用于工具类 ...
- Java界面设计
---------------siwuxie095 Java SE(Java Standard Edition) 即 Java 标准版, 一般也 ...
- java oop第14章_Swing(Java界面设计)
一. Swing相关的概念: 1. GUI:(Graphical User Interface):图形化用户界面,通过图形化的方式提供与用户交互的平台,向用户展示信息.收集用户提交的数据. 2. ...
- java界面设计(swing)
1.Swing基本组件 窗体控件 JFrame.容器控件 JPanel .标签控件 JLabe.按钮控件 JButton.文本框控件 JTextField 与 JTextArea(注意JScrollP ...
- 学习笔记11—MATLAB 界面设计
1.cmd窗口输入-guide------> 打开.fig文件 2.查看SPM源代码: 2.matlab中如何改x,y轴以及图例上字体大小 1) x,y轴 -------整个轴上面就一个设定字符 ...
- 转:二十七、Java图形化界面设计——容器(JFrame)
转:http://blog.csdn.net/liujun13579/article/details/7756729 二十七.Java图形化界面设计——容器(JFrame) 程序是为了方便用户使用的, ...
- 二十七、Java图形化界面设计——容器(JFrame)
摘自http://blog.csdn.net/liujun13579/article/details/7756729 二十七.Java图形化界面设计--容器(JFrame) 程序是为了方便用户使用的, ...
- Java图形化界面设计——容器(JFrame)
Java图形化界面设计——容器(JFrame) 程序是为了方便用户使用的,因此实现图形化界面的程序编写是所有编程语言发展的必然趋势,在命令提示符下运行的程序可以让我们了解java程序的基本知识体系结构 ...
- 自由软件之父、Google+设计者、Java之父、Linux之父、万维网之父、Vi编辑器之父、苹果Lisa电脑界面设计、微软首席软件架构师
自由软件之父.Google+设计者.Java之父.Linux之父.万维网之父.Vi编辑器之父.苹果Lisa电脑界面设计.微软首席软件架构师 理查德·斯托曼(Richard Stallman) 理查德· ...
随机推荐
- [css] CSS相对定位|绝对定位
第一篇链接:http://www.zhangxinxu.com/wordpress/2010/12/css-%E7%9B%B8%E5%AF%B9%E7%BB%9D%E5%AF%B9%E5%AE%9A% ...
- HttpHelper类登录淘宝联盟并下载淘宝客订单xls
本次开发环境与工具如下:IE9.0浏览器 + IE抓包插件HttpWatch +WIN7 64位系统 + VS2005 IDE + .NET 2.0框架本想上传HttpWatch抓包插件,但由于文件超 ...
- CAD打开文件总是弹出要求选择字体怎么办
CAD打开文件总是弹出要求选择字体怎么办1.在C:\Documents and Settings\下搜索acad.fmp文件,双击用记事本打开acad.fmp文件,在最后添加内容,上面几行本来就有,不 ...
- mysql查询结果导出到文件
方法一: 直接执行命令: mysql> select count(1) from table into outfile '/tmp/test.xls'; Query OK, 31 rows ...
- Python--关于连接符+
连接符 + 连接符 + 实则是创建了新的对象并占用新的内存(dict.set不能使用) String 由于Python必须为每一个使用连接符+的字符串分配新的内存,并产生新的字符串.下面两种方式会更有 ...
- Creating Materials at runtime And Issue of Shader.Find()
Creating Materials at runtimehttp://forum.unity3d.com/threads/create-materials-at-runtime.72952/ //通 ...
- Java多线程干货系列(1):Java多线程基础
原文出处: 嘟嘟MD 前言 多线程并发编程是Java编程中重要的一块内容,也是面试重点覆盖区域,所以学好多线程并发编程对我们来说极其重要,下面跟我一起开启本次的学习之旅吧. 正文 线程与进程 1 线程 ...
- mysql 处理查询请求过程
需要搞清楚查询为什么会慢,就要搞清楚mysql处理查询请求的过程: 1.客户端发送SQL请求给服务器 2.服务器检查是否可以在查询缓存中命中该SQL 查询缓存对SQL性能的影响. 1.需要对缓存加 ...
- OC语言@property @synthesize和id
OC语言@property @synthesize和id 一.@property @synthesize关键字 注意:这两个关键字是编译器特性,让xcode可以自动生成getter和setter的声明 ...
- ASP.NET中使用代码来进行备份和还原数据库
ASP.NET中使用代码来进行备份和还原数据库 SQL代码: 1 2 3 4 5 -- 备份数据库 backup database db_CSManage to disk='c:\backup.ba ...