大家好,今天小编关注到一个比较有意思的话题,就是关于java语言组件的问题,于是小编就整理了1个相关介绍Java语言组件的解答,让我们一起看看吧。
为什么一提到j***a的swing和awt组件,大家都不建议学?
早期的j***a主要是应用在web开发方面,所以从实用的角度出发,确实可以略过AWT和Swing的学习。在移动端开发流行之后,AWT和Swing又成为一个必修的内容了,因为做Android开发如果有一定的AWT基础是比较好的,很多概念是统一的。
为了描述这个问题,我们首先要了解到底什么是AWT,什么是Swing,以及它们与Android开发有什么联系。
j***a语言第一个支持图形界面开发的API就是AWT,在AWT中定义了j***a图形界面的很多核心概念,所以要了解j***a的图形界面开发方式一定要从了解AWT开始。下面分别介绍一下AWT中的三个核心概念:容器、组件、布局。
图形容器是存放图形元素的场所和环境,j***a中把容器分为顶级容器和次顶级容器。顶级容器可以单独显示、次顶级容器不能单独显示。顶级容器的代表是Frame,次顶级容器的代表是Panel。
图形组件是具体的图形应用元素,比如Button(按钮)、TextField(文本框)、Label(标签)、Choice(下拉列表)等等,每一个图形组件代表一种具体的图形应用元素。
布局的作用是安排图形组件在容器中的排列样式,常见的布局方式有BorderLayout、FlowLayout和GridLayout等。其中BorderLayout是Frame的默认布局管理器,FlowLayout是Panel的默认布局管理器。
具体的图形开发根据不同的界面设计***用不同的容器、布局和组件进行搭配组合,复杂的图形组件遵循顶级容器嵌套次顶级容器的方式来完成。
Swing与AWT相比较最大的优点是轻量级方式,Swing不依赖于本地操作系统,所以在样式上能够进行统一。在写法上***用了在AWT的类名基础上增加一个大写的J字符,比如在AWT中的Frame改为JFrame,Button改为JButton等等。
在实际的开发中比较推荐使用Swing的方式,一个原因是Swing的组件在外观上更具备科技感,另一个原因是它占用的***较AWT更少。
说到AWT和Swing一定要说一下图形组件的***处理方式,J***a中的***处理方式***用了监听的方式,也可以称为“代理”的方式。***处理类通过实现具体的接口来完成对应的***处理,比如ActionEvent对应的ActionListener接口;KeyEvent对应的KeyListener接口;MouseEvent对应的MouseListener接口和MouseMotionListener接口;WindowEvent对应的WindowListener接口等等。
这个涉及到不同的编程语言有不同的特性,如C和C++虽然复杂,但是性能较好,适合于系统底层的开发,如操作系统、桌面应用和单片机等;而j***a利用JVM的性能,兼顾了编译和解析,具有更好的可移植性,更适合于web应用和手机移动应用,开发桌面应用在性能上不如C和C++。而解释性语言的代表python,简单易学,开发效率高,但是性能较低,目前广泛应用于web程序开发,而较少应用于纯桌面应用程序开发。
因此,我们应该有一个认知就是编程语言是一种工具,每一个工具都会有优劣,工欲善其事必先利其器,我们要充分发挥不同工具的特点,才能很好地驾驭不同的技术。学习则是需要有针对性,在特定的应用场景下,使用合适的技术,而不能只靠一种技术运用到所有的应用场景中。
是没有啥客户端软件用swing/awt了,不过也有,比如著名的intellij idea就是,看你自己了,站在学习的角度,多学点东西自然没有坏处,不过站在工作的角度,的确不太可能用到,现在的j***a应该主要还是服务端了。
而且就算要用j***a写客户端软件,你也可以考虑j***afx,这也是j***a中用于替代swing的下一代产品,也是包含在jdk中的
swing的缺点的话,界面表示,处理逻辑,数据都耦合在一起应该算一个,就像把前端的js,html和数据放在一起,业务复杂点,用这个弄起来复杂度就会直线上升。j***afx已经可以分离处理逻辑和界面显示了,相对好一点,毕竟下一代嘛
工作中我用过swing开发过,而且用的时间不短,至少7到8年吧,我来说一下为什么大家都不建议学的原因吧。
首先我们先要搞清楚awt跟swing是什么东西,只有搞清楚了才能知道这个有没有用。swing跟awt是j***a提供的一套gui组件库,例如按钮,文本框等等。j***a最初只有awt,由于j***a是跨平台的,所以awt只是提供了各个平台都有的组件,这就导致awt提供的组件很少,在开发UI界面时不[_a***_],所以后来就又搞了个swing。swing不是来替代awt的,它是awt的扩展,它提供的所有的组件都是绘制出来的。awt是重量组件,swing是轻量组件。为什么叫轻量组件跟重量组件,因为awt的组件都是操作系统提供的,而swing组件都是绘制出来的。
如果要用j***a开发桌面程序,awt跟swing是一个选择。为什么是一个选择呢,因为还存在其它的选择。例如swt,j***afx这些。swt也是一个组件库,它的机制有点像是awt跟swing的结合体。swt提供的组件如果系统有,就使用系统的,如果没有就自己绘制一个,是不是跟awt跟swing类似。swt由于这种机制决定了它不是跨平台的,另外它的速度要比swing快,而且它比awt跟swing好看。j***afx是后来推出的,个人没用过,不好解释。
从上面的介绍就知道这个是做界面,而j***a目前主要的应用场景是做后台的,用这个开发界面最大的问题就是不好看,所以一般很多人都不会学这个,所以如果不是从事UI相关的也就不推荐学习这个了。
前面说了j***a主要场景是后台的,当然了也有用j***a做桌面程序的,但是比较少,例如永中office,,lotus notes等等。永中office是用awt跟swing做的,原生的awt跟swing比较难看,但是永中office看上去不像原生的,这主要是永中公司它们基于swing自己实现了一套组件库。eslipse是基于swt的。下面分别是swing
这是永中office
这是eclipse
由于用j***a开发桌面软件的需求很少,所以一般不推荐学习awt跟swing。当然了多学还是有好处的,像swing的很多组件都是基于MVC的思想设计的,组件的***机制都是基于观察者模式的。
到此,以上就是小编对于j***a语言组件的问题就介绍到这了,希望介绍关于j***a语言组件的1点解答对大家有用。