【Swing】Swing初步认知
AWT(abstract Window Toolkit)
AWT是java发布的第一个图形界面库。AWT通过调用系统本地的库,来创建和显示控件。
AWT 的组件都是使用的native code来编写的。所以AWT 的组件扩展性不够好。现在人们更愿意使用swing。
但是AWT依然起作用。它负责为Swing提供事件处理机制,输入管理,键盘焦点管理等等。
Swing
Swing 的出现并不是为了取缔AWT,因为他本身也依赖AWT。Swing组件是通过java2D绘制(画出来的)的,所以界面较AWT更加美观,并且与本地组件的风格不同。
Swing组件绝大多数都是用java编写的(除了JFrame,JDialog,JWindow,JApplet),这就意味着,我们可以根据自己的需要,来扩展他们。

Swing 的特点
轻量级 Swing组件是独立于本地OS的,因为绝大部分的Swing控件都使用纯java编写,而不是在底层调用本地OS的API。
丰富的控件 SWING提供了丰富的高级控件:Tree,TabbedPane, slider, colorpicker, table 等控件。
高度自定义 正因为Model和View分离开的MVC架构模式,使得Swing控件可以被轻松的扩展为自定义样式的组件。
热拔插式的主题感官 Swing 应用程序的感官可以在运行时任意切换。
Swing的MVC框架模式
Model: 代表了组件的数据。如Button的颜色,长,宽等都是内部用字段来存储的数据。
View: 代表了可显示的组件。它一定程度上反映了组件的内部数据。如JLabel显示文本。
Controller: 获取到用户从视图组件输入的数据,然后反映到组件的Model层,从而更新组件的数据,组件内部数据的更新,往往又会通过Controller
来反应到View层。以此来达到交互的目的。
Swing的整体类结构

| Component |
Component为Swing中不包含菜单的UI控件提供了抽象基础。Component代表了图形对象。 |
| Container |
Container代表了一个可以容纳其他Swing组件的组件。 |
| JComponent |
JComponent对象是所有Swing UI组件的基类。 |
框架
JFrame:窗体
Dialog:对话框
UI 控件
| JLabel |
用于显示普通的文本 |
| JButton |
带文本或者图像的普通按钮 |
| JCheck Box |
复选框:勾选或者不勾选2中状态 |
| JRadioButton |
单选按钮:选中此选项或者选择其他。通常多个单选按钮为一组 |
| JTextField |
单行文本输入框 |
| JPasswordField |
单行密码输入框,密文显示 |
| JTextArea |
多行多列文本输入域 |
| JList |
可滚动的文本项目显示列表 |
| JComboBox |
A JComboBox component presents the user with a to show up menu of choices. |
| ImageIcon |
实现了Icon接口的组件。用来显示Icon图像。 |
| JScrollbar |
滚动条。使用户能通过滚动条来改变基于一个范围的值。如音量,图片的放大或者缩小程度。 |
| JOptionPane |
各种类型的对话框,提供消息提示。 |
| JFileChooser |
文件或者文件夹选择对话框 |
| JColorChooser |
颜色选择面板 |
| JProgressBar |
显示了程序执行某项工作的进度百分比 |
| JSlider |
A JSlider lets the user graphically select a value by sliding a knob within a bounded interval. |
| JSpinner |
A JSpinner is a single line input field that lets the user select a number or an object value from an ordered sequence. |
布局管理器
|
BorderLayout |
描述待补充 |
| FlowLayout | 描述待补充 |
| BoxLayout | 描述待补充 |
| CardLayout | 描述待补充 |
| GridLayout | 描述待补充 |
| GridBagLayout | 描述待补充 |
| GroupLayout | 描述待补充 |
| SpringLayout | 描述待补充 |
其他
java.awt.Color:基本颜色定义
java.awt.Font:基本字体定义
java.awt.Cursor:光标操作定义
【Swing】Swing初步认知的更多相关文章
- JAVA8 in Action:行为参数化,匿名类及lambda表达式的初步认知实例整理
import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.functio ...
- C++ STL 的初步认知
学无止境!!! 尊重他人劳动,尊重出处:http://www.cnblogs.com/shiyangxt/archive/2008/09/11/1289493.html 我已经做了4年的MFC ...
- 【Java学习笔记之二十五】初步认知Java内部类
可以将一个类的定义放在另一个类的定义内部,这就是内部类. 内部类是一个非常有用的特性但又比较难理解使用的特性(鄙人到现在都没有怎么使用过内部类,对内部类也只是略知一二). 第一次见面 内部类我们从外面 ...
- Servlet初步认知
1 背景概述 在近期的公司项目开发的过程中,笔者初步学习Servlet的开发.配置与使用,本文主要介绍了Servlet的相关概念以及优势说明并附上笔者开发简单样例.今天将笔者学习的心得总结出来与大家分 ...
- 初步认知java的方法
1.正确区分函数和方法: 面向对象的语言叫做方法,面向过程的语言叫做函数,两者的意义是一样的,只是叫法不同.java是面向对象的语言,所以用方法. 2.方法的定义: 就是有名字的代码段 3.方法的目的 ...
- Java网络通信初步认知
本文转载自:http://wing011203.cnblogs.com/ 在这篇文章里,我们主要讨论如何使用Java实现网络通信,包括TCP通信.UDP通信.多播以及NIO. TCP连接 TCP的基础 ...
- 初步认知MySQL metadata lock(MDL)
http://blog.itpub.net/26515977/viewspace-1208250/ 概述 随着5.5.3引入MDL,更多的Query被“Waiting for table metada ...
- MYSQL存储过程初步认知
存储过程(Stored Procedure): 一组可编程的函数,是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行. 优点:将重 ...
- 初步认知jQuery
jQuery:是JavaScript的一个类库全写JavaScript query write less do more JavaScript查询写的更少做的更多 第一步先导入js文件: < ...
随机推荐
- CodeForces 433C Ryouko's Memory Note-暴力
Ryouko's Memory Note Time Limit:1000MS Memory Limit:262 ...
- request操作的几个容易混淆的请求路径
假定你的web application 名称为news,你在浏览器中输入请求路径: http://localhost:8080/news/main/list.jsp 则执行下面向行代码后打印出如下结果 ...
- 排序+逆向思维 ACdream 1205 Disappeared Block
题目传送门 /* 从大到小排序,逆向思维,从最后开始考虑,无后向性 每找到一个没被淹没的,对它左右的楼层查询是否它是孤立的,若是++,若不是-- 复杂度 O(n + m),还以为 O(n^2)吓得写了 ...
- MVC RenderSection
简要使用介绍 @RenderSection在母版页中占个位,然后让使用此母版页的子页自己去呈现他们的Section. 在母版页_Layout.cshtml中定义@RenderSection(" ...
- Viola Jones Face Detector
Viola Jones Face Detector是Paul viola 和 Michael J Jones共同提出的一种人脸检测框架.它极大的提高了人脸检测的速度和准确率. 速度提升方面:利用积分图 ...
- BZOJ4134 : ljw和lzr的hack比赛
设$f[x]$为$x$子树里的子游戏的sg值,$h[x]$为$x$所有儿子节点$f[x]$的异或和,则: $f[x]=mex(y到x路径上所有点的h的异或和\ xor\ y到x路径上所有点的f的异或和 ...
- BZOJ3570 : DZY Loves Physics I
考虑两个质量均为m,速度分别v1.v2的小球发生完全弹性碰撞的影响: 由动能守恒得: $\frac{1}{2}mv_1^2+\frac{1}{2}mv_2^2=\frac{1}{2}mv_1'^2+\ ...
- C++做client Java做客户端传送数据
因为要用到,但发现Java怎么都收不到C发来的数据,除非C端自动挂掉,java会一口气全收回来. 后来才发现是因为C发过来的Java用readline是读不到回车的,所以会一直等待. 所以不要用rea ...
- Designing CSS Layouts With Flexbox Is As Easy As Pie
This article is an updated excerpt of the chapter “Restyle, Recode, Reimagine With CSS3″ from our Sm ...
- objective-c 条件运算符
条件运算符 val1!=0 ? val1:val2 等价于 val1?val2