java swing 选择题_经典Java Swing面试题(附答案)

本文整理了Java Swing的相关面试题,涵盖了Swing的基本概念、与AWT的区别、线程安全方法、类库结构、容器分类以及Swing的优缺点。Swing作为Java GUI工具包,提供了丰富的组件和特性,是Java程序员开发图形界面的重要选择。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Swing是新一代的图形界面工具,是一种轻量级组件,它采用纯java实现,不依赖于本地平台的图形界面。这篇文章整理了关于Java Swing面试题,有面试需要的朋友们可以学习下面的内容。

1、Swing的基本概念是什么?

答:Swing是java中的GUI工具包。是为解决AWT存在的问题而新开发的图形界面包,包括了图形用户界面(GUI)器件如:文本框,按钮,分隔窗格和表。Swing是对AWT的改良和扩展。

2、AWT和Swing之间的区别是什么?

答:(1)AWT是基于本地方法的C/C++程序,其运行速度比较快;Swing是基于AWT的java程序,其运行速度比较慢;(2)AWT的控件在不同的平台可能表现不同,而Swing在所有平台表现一致。

3、哪些Swing的方法是线程安全的?

答:只有3个线程安全的方法:repaint()、 revalidate()、and invalidate()。

4、AWT和Swing实现原理的对比?

答:AWT的图形函数与操作系统提供的图形函数有着一一对应的关系。也就是说,当我们利用 AWT构件图形用户界面的时候,实际上是在利用操作系统的图形库。

不同的操作系统其图形库的功能可能不一样,在一个平台上存在的功能在另外一个平台上则可能不存在。为了实现java语言所宣称的"一次编译,到处运行"的概念,AWT不得不通过牺牲功能来实现平台无关性。因此,AWT的图形功能是各操作系统图形功能的“交集”。因为AWT是依靠本地方法来实现功能的,所以AWT控件称为“重量级控件”。而Swing ,不仅提供了AWT的所有功能,还用纯粹的Java代码对AWT的功能进行了大幅度的扩充。

5、Swing类库结构是怎样的?

答:

8e29d1872cda9d9a10bc30d473a909f1.png

(1)Swing围绕JComponent组件构建,JComponent是由AWT得容器类扩展而来;(2)Swing组件除了AbstractButton类之外都以J来头;(3)Swing容器组件直接继承AWT类库中的容器组件类,其他大部分组件都是继承 JComponet 组件;(3)组件可以划分为容器组件和非容器组件,容器组件包括 JFmme和JDialog。其中JComponent定义了非容器类的轻量级组件(JBntton、JMenu等);(4)组件分容器组件和非容器组件,容器组件里面又分顶层容器和中间容器。

6、Swing容器分类有什么?

答:常见的窗口就是一种容器。容器本身也是一种组件,它的作用就是用来组织、管理和显示其他组件。Swing中容器可以分为两类:顶层容器和中间容器。

顶层容器是任何图形界面程序都要涉及的主窗口,是显示并承载组件的容器组件,在Swing中有三种可以使用的顶层容器,分别是JFrame、JDialog和JApplet。

中间容器是容器组件的一种,也可以承载其他组件,但中间容器不能独立显示,必须依附于其他的顶层容器。常见的中间容器有JPanel、JScrollPane、JTabbedPane和JToolBar。

7、Swing在GUI速度方面的不足之处是什么?

答:比AWT和SWT更多的内存消耗。Swing自己实现了所有组件。因此,它在运行时装载了大量的类。一些其他的问题来源于小的可变对象的创建,如Rectangle,Point,这些对象基于同步的考虑通常不可重用。java在堆上创建所以对象。小的对象通常导致了额外的堆空间消耗。许多小的对象较之大对象更难以有效地被垃圾回收。因此,Swing应用程序通常无法及时回收大而小的对象。这种情况的普遍就会导致性能下降。

更多的启动时间。现在JVM已经快得多了,许多人甚至扬言它可以媲美C++的实现。但多数的java应用程序还是看上去很慢。实际上,java性能的很多问题来源于类装载机制。这是一个I/O操作,故而能够明显地降低java应用程序的速度。Swing通常包含了上千个Swing类的使用,在Swing应用程序可以显示它的主窗口之前,它比AWT或SWT装载了多得多的类。这严重降低了Swing的启动时间,这种问题也许会相对好一点如果Swing的类是以共享系统库的方式预加载的。

8、Swing的优点有哪些?

答:Swing是SUN推荐使用的GUI工具集,通过几个本版的修改和扩展后,现在的swing在某些领域有着明显优势:

(1)丰富的组件类型:Swing提供了非常广泛的标准组件。这些组件和SWT一样丰富。基于它良好的可扩展性,除了标准组件,Swing还提供了大量的第三方组件。许多商业或开源的Swing组件库在开发多年后都已经可以方便地获取了。

(2)丰富的组件特性:Swing不仅包含了所有平台上的特性,它还支持根据程序所运行的平台来添加额外特性,Swing组件特性遵循特定原则,易于扩展,因此能够提供较SWT和AWT更多的功能。

(3)好的组件API模型支持:Swing遵循MVC模式,这是一种非常成功的设计模式。它的API成熟并设计良好。经过多年的演化,Swing组件APIs变得越来越强大,灵活和可扩展。它的API设计被认为是最成功的GUI API之一。较之SWT和AWT更面向对象,也更灵活而可扩展。

(4)标准的GUI库:Swing和AWT一样是JRE中的标准库。因此,你不用单独地将它们随你的应用程序一起分发。它们是平台无关的,不用担心平台兼容性。

(5)成熟稳定:由于它是纯java实现的,不会有SWT的兼容性问题,Swing在每个平台上都有相同的性能,不会有明显的性能差异。

(6)可扩展和灵活性:Swing完全由java代码实现。Swing基于MVC的结构使得它可以发挥java作为一门面向对象语言的优势,提供了许总体上良好的性能。

以上就是今天对java Swing面试题的整理,Swing提供了更多的图形界面组件,可以开发出美观的图形界面程序,所以Swing也是java程序员们需要会使用的图形界面工具,希望在java面试中遇到关于Swing面试题时,大家可以顺利作答,顺利通过面试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值