用户图形界面(GUI)学习笔记(一)——Swing与AWT
一、Swing与AWT
对象窗口工具箱(Abstact Window Toolkit,AWT),是JAVA1.0刚出现的时候,包含的一个GUI设计类库。它将处理用户界面元素的任务委派给每个目标平台(Windows,Macintosh等)的本地GUI工具箱。本地GUI工具箱负责用户界面元素的创建和动作。比方说,如果你在JAVA窗体中放一个文本框,就会有一个低层的“对等体”文本框(应该可以理解为本地图形元素吧)用来真正处理文本输入。理论上讲程序可以运行在任何平台。 SUN公司对AWTi的口号是:一次编写,随处使用。
对于简单的应用程序来说,这种方法还是不错的。但是想要编写依赖本地一些高质量、可移植的图形库的程序就会暴露出一些缺陷。首先用户界面元素在不同的平台上,在观感上和操作行为上存在一些差别。其次由于同平台上的用户界面元素的丰富程度不同,可移植库的规模很受限制。最糟糕的是在不同平台上AWT用户界面库存在着不同的bug.研发人员需要在每个平台上测试应用程序,人们戏称AWT为:一次编写,随处调试。
后来SUN公司和Netscape创建了Swing用户界面库,它的模式是用户把用户界面元素绘制在空白窗口上,而对等体只需要完成对窗口的创建和绘制。Swing是Java基础类库(Java Foundation Class,JFC)的一部分,而这个类库除了Swing组件,还包括一个可访问性API,一个2DAPI和一个可拖放API。
Swing显示元素要比显示AWT基于对等体组件的速度慢一些。但是这不是啥大问题,Swing有无可抗拒的优势使得人们选择Swing:
1、Swing有一个丰富、便捷的用户界面元素集合
2、Swing对底层平台依赖很少,因此与平台相关的bug少。
3、Swing给予不同平台的用户一致的感觉
即使这样,Swing并不能够完全取代AWT,它是基于AWT之上,Swing仅仅提供了强大的用户界面组件,还是要使用基本的AWT处理事件的。
other tips:
1、绝大多是Swing组件都是以"J"开头,eg:JButton,JFrame等。而AWT组件类不带“J”,eg:Button,JFrame等。二者若混合使用会导致组件视觉和行为的不一致。
2、Swing类位于javav.swing包中,包名javax表示这是一个Java扩展包,而不是核心包。
用户图形界面(GUI)学习笔记(一)——Swing与AWT的更多相关文章
- AWT提供了Java Applet 和Java Application中可用的用户图形界面 GUI 中的基本组件
AWT提供了Java Applet 和Java Application中可用的用户图形界面 GUI 中的基本组件( component s). 由于Java是一种独立于平台的 程序设计语言 ,但GUI ...
- Go 在 Windows 上用户图形界面 GUI 解决方案 Go-WinGUI 国产(使用cef 内核)
Go 在 Windows 上用户图形界面 GUI 解决方案 Go-WinGUI 国产 Go 在服务端的优势不容置疑,但是在桌面应用上却没有好的 GUI 支持,本项目是 Go 语言在 Windows 上 ...
- 【Python】 用户图形界面GUI wxpython IV 菜单&对话框
更多组件 ■ 菜单栏 Menu 菜单是很多GUI必不可少的一部分.要建立菜单,必须先创建菜单栏: menuBar = MenuBar() menu = Menu() item1 = menu.Appe ...
- 【Python】 用户图形界面GUI wxpython II 布局和事件
wxpython - 布局和事件 这章主要记录布局器Sizer以及事件的用法. // 目前还需要记录的:Sizer的Add方法加空白,Sizer的Layout,Sizer的Remove如何有效 ■ 布 ...
- 【Python】 用户图形界面GUI wxpython I 基本用法和组件
wxpython - 基本用法和组件 wxpython是python对跨平台GUI库wxWidgets的封装.wxWidgets是由C++写成的. wxpython被包装进了wx模块中,用它设计GUI ...
- 【Python】 用户图形界面GUI wxpython III 更多组件
wxpython - 更多组件 我写到的这些组件可能一来不是很详细,二来不是最全的,想要更好地用这些组件,应该还是去看看教程和别的示例.比较简单的,推荐http://download.csdn.net ...
- 十. 图形界面(GUI)设计1.图形界面设计基础
早先程序使用最简单的输入输出方式,用户在键盘输入数据,程序将信息输出在屏幕上.现代程序要求使用图形用户界面(Graphical User Interface,GUI),界面中有菜单.按钮等,用户通过鼠 ...
- [学习一个] Matlab GUI 学习笔记 Ⅰ
Matlab GUI 学习笔记 Ⅰ 1. Foreword Matlab 是严格意义上的编程语言吗?曾经有人告诉我他是通过 Matlab 学会了面对对象编程,我是不信的,但这依然不妨碍它在特殊领域的强 ...
- Java图形界面GUI
Java图形界面GUI 设置窗体JFrame对象 package com.Aha.Best; import javax.swing.ImageIcon; import javax.swing.JFra ...
随机推荐
- maxiang.io css
/**设置你自己的CSS.例如:h1 { border-bottom: 1px solid #ccc; line-height:1.6;}body { background:#FDFFD0} **/p ...
- codeforces 742E (二分图着色)
E. Arpa's overnight party and Mehrdad's silent entering Note that girls in Arpa's land are really at ...
- VueJS取得URL参数
vuejs取得URL中参数的值 地址:http://localhost:3333/#/index?id=001 结果:001 console.log(this.$route.query.id)
- mysql创建新用户并分配数据库权限
下面展示了如何在Linux中创建和设置一个MySQL用户. 首先以root身份登录到MySQL服务器中. $ mysql -u root -p 当验证提示出现的时候,输入MySQL的root帐号的密码 ...
- odoo10 费用报销
odo10 对费用报销进行了改进,恢复了 8.0 及之前版本具有的 单个报销包含多个 明细内容的功能. 使用步骤大致如下: 根据管理需要设立 相应的科目和分析帐户 科目 分析帐户 建立费用目录 员工录 ...
- SQL联合更新(只要有关联字段就能执行更新!)
update t1 set KCLX=t2.KCLX,KSFS=t2.KSFS from JX_PlannedCourse t1 inner join JX_Course t2 on t1.KCDM= ...
- 《CODE》读后笔记——第1~13章
1.电筒密谈 Morse code表 文中提到"英语词汇就是一种编码".这句话仿佛有一种哲学思想在里面,万物皆可以以任何形式编码,只是编码的方式和途径不同.有些编码简单易懂易于接受 ...
- SVN系统的几个术语
SVN系统的几个术语 User:用户,可以远程连接到SVN服务器的权限实体. User Group:用户组,用于管理一组权限相同的用户. Repository:版本库,在服务器端保存着的项目中所有的文 ...
- ZOJ3774_Power of Fibonacci
求fibonacci数列前N个数的K次方和. 通项公式:F[n]=((1+sqrt(5))/sqrt(5)-(1-sqrt(5))/sqrt(5))/sqrt(5). 有点乱,不过由于可以保证最后的结 ...
- 讲解版的导航高亮(新手福利)原生JS
1.先写样式: 导航的排版样式: 导航对应高亮样式: .d6000f{ background:red; } .d6000f a{ color:#fff; } 我这个地方导航高亮样式为背景红色,字体颜色 ...