当前位置: 首页 > 图灵资讯 > 技术篇> 经典Java Swing面试题(附答案)

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

来源:图灵教育
时间:2023-03-27 16:05:03

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

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

  答:Java中的GUI工具包是Swing。是为解决新开发的AWT图形界面包包包括图形用户界面(GUI)文本框、按钮、分隔窗格和表等设备。Swing是AWT的改进和扩展。

  2、AWT和Swing有什么区别?

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

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

  答:只有三种线程安全方法:repaint()、 revalidate()、and invalidate()。

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

  答:AWT的图形函数与操作系统提供的图形函数一一对应。换句话说,当我们使用它时 AWT构件图形用户界面实际上是在使用操作系统的图形库。

  不同的操作系统可能具有不同的图形库功能,而存在于一个平台上的功能可能不存在于另一个平台上。为了实现它java语言所宣称的java语言"到处编译和操作"AWT必须通过牺牲功能来实现平台的无关性。因此,AWT的图形功能是每个操作系统的图形功能“交集”。由于AWT依靠本地方法实现功能,因此AWT控制被称为“重量级控件”。而Swing ,它不仅提供了AWT的所有功能,而且大大扩展了AWT的功能,具有纯Java代码。

  5、Swing类库的结构是什么?

  答:

  (1)Swing围绕Jcomponent组件构建,Jcomponent由AWT容器类扩展;(2)Swing组件除Abstractbuttton类外,均以J为主;(3)Swing容器组件直接继承AWT类库中的容器组件类,其他大多数组件都是继承的 JComponet (3)组件可分为容器组件和非容器组件,包括容器组件 JFmme和JDialog。JComponent定义了非容器轻量级组件(JBntton、JMenu等));(4)组件分为容器组件和非容器组件,容器组件分为顶层容器和中间容器。

  6、什么是Swing容器分类?

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

  顶层容器是任何图形界面程序都必须涉及的主窗口,是显示和携带组件的容器组件在Swing中,JFrameee有三种可用的顶层容器、JDialog和JApplet。

  中间容器是一种容器组件,也可以携带其他组件,但中间容器不能独立显示,必须附着在其他顶层容器上。常见的中间容器有JPanel、JScrollPane、JTabedPane和JToolBar。

  7、GUI速度Swing的缺点是什么?

  答:比内存消耗更多的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中的标准库。因此,您不必单独与您的应用程序分发它们。它们与平台无关,也不必担心平台兼容性。