动力节点旗下在线教育品牌  |  咨询热线:400-8080-105 学Java全栈,上蛙课网
首页 > 文章

经典Java Swing面试题(附答案)

08-26 16:53 251浏览
举报 T字号
  • 大字
  • 中字
  • 小字

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类库结构是怎样的?

答:

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面试题时,大家可以顺利作答,顺利通过面试。

0人推荐
共同学习,写下你的评论
0条评论
代码小兵1123
程序员代码小兵1123

6篇文章贡献24102字

作者相关文章更多>

推荐相关文章更多>

Java数据结构

HelloWorld10-31 08:24

浅谈MySQL中SQL优化的常用方法

军哥08-12 23:29

五分钟读懂UML类图

江湖人称小李白12-10 10:41

MyBatis开发框架的四大核心

IT逐梦者08-17 21:43

一次搞定continue,break和return

HelloWorld11-06 11:19

发评论

举报

0/150

取消