java面试题7 牛客:关于AWT和Swing说法正确的是?
关于AWT和Swing说法正确的是?
A Swing是AWT的子类
B AWT在不同操作系统中显示相同的风格
C AWT不支持事件类型,Swing支持事件模型
D Swing在不同的操作系统中显示相同的风格
AWT和Swing都是java中的包。
AWT(Abstract Window Toolkit):抽象窗口工具包,早期编写图形界面应用程序的包。
Swing :为解决 AWT 存在的问题而新开发的图形界面包。Swing是对AWT的改良和扩展。
AWT和Swing的实现原理不同:
AWT的图形函数与操作系统提供的图形函数有着一一对应的关系。也就是说,当我们利用 AWT构件图形用户界面的时候,实际上是在利用操作系统的图形库。
不同的操作系统其图形库的功能可能不一样,在一个平台上存在的功能在另外一个平台上则可能不存在。为了实现Java语言所宣称的"一次编译,到处运行"的概念,AWT不得不通过牺牲功能来实现平台无关性。因此,AWT 的图形功能是各操作系统图形功能的“交集”。
因为AWT是依靠本地方法来实现功能的,所以AWT控件称为“重量级控件”。
而Swing ,不仅提供了AWT 的所有功能,还用纯粹的Java代码对AWT的功能进行了大幅度的扩充。
例如:并不是所有的操作系统都提供了对树形控件的支持, Swing则利用了AWT中所提供的基本作图方法模拟了一个树形控件。
由于 Swing是用纯粹的Java代码来实现的,因此Swing控件在各平台通用。
因为Swing不使用本地方法,故Swing控件称为“轻量级控件”。
AWT和Swing之间的区别:
1)AWT 是基于本地方法的C/C++程序,其运行速度比较快;Swing是基于AWT的Java程序,其运行速度比较慢。
2)AWT的控件在不同的平台可能表现不同,而Swing在所有平台表现一致。
在实际应用中,应该使用AWT还是Swing取决于应用程序所部署的平台类型。例如:
1)对于一个嵌入式应用,目标平台的硬件资源往往非常有限,而应用程序的运行速度又是项目中至关重要的因素。在这种矛盾的情况下,简单而高效的AWT当然成了嵌入式Java的第一选择。
2)在普通的基于PC或者是工作站的标准Java应用中,硬件资源对应用程序所造成的限制往往不是项目中的关键因素。所以在标准版的Java中则提倡使用Swing, 也就是通过牺牲速度来实现应用程序的功能。
在java中,AWT包的名称是java.awt,Swing包的名称是javax.swing。
java.awt和javax.swing两个包的层次关系如下:
Container类是java.awt.Component类的子类,JComponent类又继承自Container类。因此,JComponent类是AWT和Swing的联系之一。
除了Swing顶层容器类(top level containers)以外,其余所有的Swing组件类都继承自JComponent类,如前所述,JComponent类是Container类的子类,因此,所有的Swing组件都可作为容器使用。
Swing顶层容器类包括了JFrame、JDialog、JApplet、JWindow,它们为其他的Swing组件提供了绘制自身的场所。
Swing组件按功能可分为如下几类:
1、顶层容器:JFrame, JApplet, JDialog和JWindow。
2、中间容器:JPanel, JScrollPane, JSplitPane, JTooIBar等。
3、特殊容器:在用户界面上具有特殊作用的中间容器,如JlnternalFrame、JRootPane、JLayeredPane和JDestopPane等。
4、基本组件:实现人机交互的组件,如Button、 JComboBox、Just, Menu、Mider等。
5、不可编辑信息的显示组件:向用户显示不可编辑信息的组件,如JLabel、JProgressBar和JTooITip等。
6、可编辑信息的显示组件:向用户显示能被编辑的格式化信息的组件,如JTable、JTextArea和JTextField等。
7、特殊对话框组件:可以直接产生特殊对话框的组件,如JColorChoosor和JFileChooser等。
Swing的4个顶层容器类直接继承了AWT组件,而不是从JComponent派生出来的,它们分别是:JFrame、JDialog、JApplet和JWindow。
顶层容器类并不是轻量级组件,而是重量级组件(需要部分委托给运行平台上GUI组件的对等体)。
顶层容器中:
1.JApplet可作为java小应用程序的窗体,但通常使用java.applet.Applet类来创建小应用程序。
2.JFrame集成自AWTFrame类,通常作为主窗体使用。
3.JDialog用于创建对话框的窗体。
4.JWindow与AWT中的Window相似,但几乎不用,因为没有太大的实用价值。
Swing组件的类名和对应AWT组件的类名基本一致,只要在原来的AWT组件类名前添加“J”即可,但有如下几个例外:
1、JComboBox:对应于AWT里的Choice组件,但比Choice组件功能更丰富。
2、JFileChooser:对位于AWT里的FileDialog组件。
3、JSrcoIIBar:对应AWT里的Scrollbar。注意两个组件类名中b字母的大小写差别。
4、JCheckBox:对应于AWT里的Checkbox。注意两个组件类名中b字母的大小写差别。
5、JCheckBoxMenuItem:对应于AWT里的CheckboxMenuItem,注意两个组件类名中b字母的大小写差别。
上面JCheckBox和JCheckBoxMenuItem与Checkbox和CheckboxMenuItem字母B的大小写差别,主要是因为早期Java命名不太规范造成的。
再看看评论
AWT :是通过调用操作系统的native方法实现的,所以在Windows系统上的AWT窗口就是Windows的风格,而在Unix系统上的则是XWindow风格。 AWT 中的图形函数与 操作系统 所提供的图形函数之间有着一一对应的关系,我们把它称为peers。 也就是说,当我们利用 AWT 来构件图形用户界面的时候,我们实际上是在利用 操作系统 所提供的图形库。由于不同 操作系统 的图形库所提供的功能是不一样的,在一个平台上存在的功能在另外一个平台上则可能不存在。为了实现Java语言所宣称的"一次编译,到处运行"的概念,AWT 不得不通过牺牲功能来实现其平台无关性,也就是说,AWT 所提供的图形功能是各种通用型操作系统所提供的图形功能的交集。由于AWT 是依靠本地方法来实现其功能的,我们通常把AWT控件称为重量级控件。
Swing :是所谓的Lightweight组件,不是通过native方法来实现的,所以Swing的窗口风格更多样化。但是,Swing里面也有heaveyweight组件。比如JWindow,Dialog,JFrame
Swing是所谓的Lightweight组件,不是通过native方法来实现的,所以Swing的窗口风格更多样化。但是,Swing里面也有heaveyweight组件。比如JWindow,Dialog,JFrame
Swing由纯Java写成,可移植性好,外观在不同平台上相同。所以Swing部件称为轻量级组件( Swing是由纯JAVA CODE所写的,因此SWING解决了JAVA因窗口类而无法跨平台的问题,使窗口功能也具有跨平台与延展性的特性,而且SWING不需占有太多系统资源,因此称为轻量级组件!!!
所以这题选D,我是歌谣,欢迎谈谈你的理解。
文章仅个人理解,来在各大网站。如有不合理之处,欢迎吐槽。
阅读目录(置顶)(长期更新计算机领域知识)https://blog.csdn.net/weixin_43392489/article/details/102380691
阅读目录(置顶)(长期更新计算机领域知识)https://blog.csdn.net/weixin_43392489/article/details/102380882
阅读目录(置顶)(长期科技领域知识)https://blog.csdn.net/weixin_43392489/article/details/102600114
歌谣带你看java面试题 https://blog.csdn.net/weixin_43392489/article/details/102675944
java面试题7 牛客:关于AWT和Swing说法正确的是?相关推荐
- java面试题29 牛客 以下关于集合类ArrayList、LinkedList、HashMap描述
java面试题29 牛客 以下关于集合类ArrayList.LinkedList.HashMap描述错误的是() A HashMap实现Map接口,它允许任何类型的键和值对象,并允许将null用作键或 ...
- java面试题28 牛客 下面有关java classloader说法错误的是?
java面试题28 牛客 下面有关java classloader说法错误的是? A Java默认提供的三个ClassLoader是BootStrap ClassLoader,Extension Cl ...
- java面试题23 牛客ArrayLists和LinkedList的区别,下述说法正确的有?
java面试题23 牛客ArrayLists和LinkedList的区别,下述说法正确的有? A ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构. B 对于随 ...
- Java面试题 22 牛客 Java是一门支持反射的语言,基于反射为Java提供了丰富的动态性支持
Java面试题 22 牛客 Java是一门支持反射的语言,基于反射为Java提供了丰富的动态性支持,下面关于Java反射的描述,哪些是错误的:( ) A Java反射主要涉及的类如C ...
- Java面试题18 牛客 假定Base b = new Derived();
Java面试题18 牛客 假定Base b = new Derived(); 调用执行b.methodOne()后,输出结果是什么? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...
- Java面试题17 牛客 下面哪个选项正确创建socket连接?
Java面试题17 牛客 下面哪个选项正确创建socket连接? Socket s = new Socket(8080); Socket s = new Socket("192.168.1. ...
- Java面试题16 牛客 以下java程序代码,执行后的结果是()
Java面试题16 牛客 以下java程序代码,执行后的结果是() 1 2 3 4 5 6 7 8 9 10 public class Test { public static void ma ...
- Java面试题15牛客 以下关于Integer与int的区别错误的是
Java面试题15牛客 以下关于Integer与int的区别错误的是 A int是java提供的8种原始数据类型之一 B Integer是java为int提供的封装类 C int的默认值为0 D In ...
- Java面试题19 牛客下面有关java的引用类型,说法正确的有?
Java面试题19下面有关java的引用类型,说法正确的有? A:对于一个对象来说,只要有强引用的存在,它就会一直存在于内存中 B:如果一个对象仅持有虚引用,那么它就和没有任何引用一样,在任何时候都可 ...
最新文章
- bootstrap 空行不显示横杠_电脑开机有显示,但进不去系统
- Collection源码阅读
- WinXP——如何重装XP系统
- 用Ultra ISO制作启动U盘装系统
- 计算机的硬盘材料,电脑坏了把硬盘资料转移到新硬盘的方法
- 华为数通HCIA学习笔记之数据通信与网络基础(二)
- 计算机职业规划范文300字,我的职业生涯规划,300字
- android GPS开发
- FFmpeg代码实现视频转jpg图片
- 五险一金和个人所得税
- 关于眼镜的后续。。。。
- python爬取微博热搜数据并保存!
- 【苹果群发推iMessage苹果推】位置推在(delegate) 收到connectionDidFinishLoading
- 人脸识别 —— insightface
- 发SCI,审稿人意见有一条是“English should be improved”,应该怎样回复?
- matlab可以仿真特殊电机,基于Matlab的异步电动机矢量控制系统的仿真研究
- C#输入三条边判断是否为三角形
- Java实现deflate算法的压缩和解压
- 【双评价学习笔记2019】农业生产适宜性评价01·土地资源评价
- 华为云号码隐私保护AXB AXYB模式代码二次封装
热门文章
- win7 安装 IIS
- 需求更大的--if条件判断
- tar.gz 文件解压 (安装 netbean 时会用到)
- (RMAN)使用恢复目录数据库执行RMAN步骤
- 四参数坐标转换c++_GPSRTK坐标转换及四参数、七参数适用条件
- python理论知识选择题_Python基础自测题答案和基础知识梳理
- 把cpp编译为so_基于VSCode和CMake进行C/C++开发第三讲GCC编译器
- MySQL5.7更改用户名密码
- 移植mysql到嵌入式ARM平台
- 安卓活动(Activity)和碎片(Fragment)的生命周期