java面试题7 牛客:关于AWT和Swing说法正确的是?
關(guān)于AWT和Swing說法正確的是?
A Swing是AWT的子類 B AWT在不同操作系統(tǒng)中顯示相同的風(fēng)格 C AWT不支持事件類型,Swing支持事件模型 D Swing在不同的操作系統(tǒng)中顯示相同的風(fēng)格AWT和Swing都是java中的包。
AWT(Abstract Window Toolkit):抽象窗口工具包,早期編寫圖形界面應(yīng)用程序的包。
Swing :為解決 AWT 存在的問題而新開發(fā)的圖形界面包。Swing是對(duì)AWT的改良和擴(kuò)展。? ?
AWT和Swing的實(shí)現(xiàn)原理不同:
 ?????? AWT的圖形函數(shù)與操作系統(tǒng)提供的圖形函數(shù)有著一一對(duì)應(yīng)的關(guān)系。也就是說,當(dāng)我們利用 AWT構(gòu)件圖形用戶界面的時(shí)候,實(shí)際上是在利用操作系統(tǒng)的圖形庫(kù)。
 ?????? 不同的操作系統(tǒng)其圖形庫(kù)的功能可能不一樣,在一個(gè)平臺(tái)上存在的功能在另外一個(gè)平臺(tái)上則可能不存在。為了實(shí)現(xiàn)Java語(yǔ)言所宣稱的"一次編譯,到處運(yùn)行"的概念,AWT不得不通過犧牲功能來實(shí)現(xiàn)平臺(tái)無關(guān)性。因此,AWT 的圖形功能是各操作系統(tǒng)圖形功能的“交集”。
 ??????? 因?yàn)锳WT是依靠本地方法來實(shí)現(xiàn)功能的,所以AWT控件稱為“重量級(jí)控件”。
?????? 而Swing ,不僅提供了AWT 的所有功能,還用純粹的Java代碼對(duì)AWT的功能進(jìn)行了大幅度的擴(kuò)充。
 ?????? 例如:并不是所有的操作系統(tǒng)都提供了對(duì)樹形控件的支持, Swing則利用了AWT中所提供的基本作圖方法模擬了一個(gè)樹形控件。
 ?????? 由于 Swing是用純粹的Java代碼來實(shí)現(xiàn)的,因此Swing控件在各平臺(tái)通用。
 ?????? 因?yàn)镾wing不使用本地方法,故Swing控件稱為“輕量級(jí)控件”。
?????? AWT和Swing之間的區(qū)別:
 ?????? 1)AWT 是基于本地方法的C/C++程序,其運(yùn)行速度比較快;Swing是基于AWT的Java程序,其運(yùn)行速度比較慢。
 ?????? 2)AWT的控件在不同的平臺(tái)可能表現(xiàn)不同,而Swing在所有平臺(tái)表現(xiàn)一致。
?????? 在實(shí)際應(yīng)用中,應(yīng)該使用AWT還是Swing取決于應(yīng)用程序所部署的平臺(tái)類型。例如:
 ?????? 1)對(duì)于一個(gè)嵌入式應(yīng)用,目標(biāo)平臺(tái)的硬件資源往往非常有限,而應(yīng)用程序的運(yùn)行速度又是項(xiàng)目中至關(guān)重要的因素。在這種矛盾的情況下,簡(jiǎn)單而高效的AWT當(dāng)然成了嵌入式Java的第一選擇。
 ?????? 2)在普通的基于PC或者是工作站的標(biāo)準(zhǔn)Java應(yīng)用中,硬件資源對(duì)應(yīng)用程序所造成的限制往往不是項(xiàng)目中的關(guān)鍵因素。所以在標(biāo)準(zhǔn)版的Java中則提倡使用Swing, 也就是通過犧牲速度來實(shí)現(xiàn)應(yīng)用程序的功能。
在java中,AWT包的名稱是java.awt,Swing包的名稱是javax.swing。
 java.awt和javax.swing兩個(gè)包的層次關(guān)系如下:
 Container類是java.awt.Component類的子類,JComponent類又繼承自Container類。因此,JComponent類是AWT和Swing的聯(lián)系之一。
 除了Swing頂層容器類(top level containers)以外,其余所有的Swing組件類都繼承自JComponent類,如前所述,JComponent類是Container類的子類,因此,所有的Swing組件都可作為容器使用。
 Swing頂層容器類包括了JFrame、JDialog、JApplet、JWindow,它們?yōu)槠渌腟wing組件提供了繪制自身的場(chǎng)所。
 Swing組件按功能可分為如下幾類:
 1、頂層容器:JFrame, JApplet, JDialog和JWindow。
 2、中間容器:JPanel, JScrollPane, JSplitPane, JTooIBar等。
 3、特殊容器:在用戶界面上具有特殊作用的中間容器,如JlnternalFrame、JRootPane、JLayeredPane和JDestopPane等。
 4、基本組件:實(shí)現(xiàn)人機(jī)交互的組件,如Button、 JComboBox、Just, Menu、Mider等。
 5、不可編輯信息的顯示組件:向用戶顯示不可編輯信息的組件,如JLabel、JProgressBar和JTooITip等。
 6、可編輯信息的顯示組件:向用戶顯示能被編輯的格式化信息的組件,如JTable、JTextArea和JTextField等。
 7、特殊對(duì)話框組件:可以直接產(chǎn)生特殊對(duì)話框的組件,如JColorChoosor和JFileChooser等。
Swing的4個(gè)頂層容器類直接繼承了AWT組件,而不是從JComponent派生出來的,它們分別是:JFrame、JDialog、JApplet和JWindow。
 頂層容器類并不是輕量級(jí)組件,而是重量級(jí)組件(需要部分委托給運(yùn)行平臺(tái)上GUI組件的對(duì)等體)。
 頂層容器中:
 1.JApplet可作為java小應(yīng)用程序的窗體,但通常使用java.applet.Applet類來創(chuàng)建小應(yīng)用程序。
 2.JFrame集成自AWTFrame類,通常作為主窗體使用。
 3.JDialog用于創(chuàng)建對(duì)話框的窗體。
 4.JWindow與AWT中的Window相似,但幾乎不用,因?yàn)闆]有太大的實(shí)用價(jià)值。
Swing組件的類名和對(duì)應(yīng)AWT組件的類名基本一致,只要在原來的AWT組件類名前添加“J”即可,但有如下幾個(gè)例外:
 1、JComboBox:對(duì)應(yīng)于AWT里的Choice組件,但比Choice組件功能更豐富。
 2、JFileChooser:對(duì)位于AWT里的FileDialog組件。
 3、JSrcoIIBar:對(duì)應(yīng)AWT里的Scrollbar。注意兩個(gè)組件類名中b字母的大小寫差別。
 4、JCheckBox:對(duì)應(yīng)于AWT里的Checkbox。注意兩個(gè)組件類名中b字母的大小寫差別。
 5、JCheckBoxMenuItem:對(duì)應(yīng)于AWT里的CheckboxMenuItem,注意兩個(gè)組件類名中b字母的大小寫差別。
上面JCheckBox和JCheckBoxMenuItem與Checkbox和CheckboxMenuItem字母B的大小寫差別,主要是因?yàn)樵缙贘ava命名不太規(guī)范造成的。
 再看看評(píng)論
AWT :是通過調(diào)用操作系統(tǒng)的native方法實(shí)現(xiàn)的,所以在Windows系統(tǒng)上的AWT窗口就是Windows的風(fēng)格,而在Unix系統(tǒng)上的則是XWindow風(fēng)格。 AWT 中的圖形函數(shù)與 操作系統(tǒng) 所提供的圖形函數(shù)之間有著一一對(duì)應(yīng)的關(guān)系,我們把它稱為peers。 也就是說,當(dāng)我們利用 AWT 來構(gòu)件圖形用戶界面的時(shí)候,我們實(shí)際上是在利用 操作系統(tǒng) 所提供的圖形庫(kù)。由于不同 操作系統(tǒng) 的圖形庫(kù)所提供的功能是不一樣的,在一個(gè)平臺(tái)上存在的功能在另外一個(gè)平臺(tái)上則可能不存在。為了實(shí)現(xiàn)Java語(yǔ)言所宣稱的"一次編譯,到處運(yùn)行"的概念,AWT 不得不通過犧牲功能來實(shí)現(xiàn)其平臺(tái)無關(guān)性,也就是說,AWT 所提供的圖形功能是各種通用型操作系統(tǒng)所提供的圖形功能的交集。由于AWT 是依靠本地方法來實(shí)現(xiàn)其功能的,我們通常把AWT控件稱為重量級(jí)控件。
Swing :是所謂的Lightweight組件,不是通過native方法來實(shí)現(xiàn)的,所以Swing的窗口風(fēng)格更多樣化。但是,Swing里面也有heaveyweight組件。比如JWindow,Dialog,JFrame
Swing是所謂的Lightweight組件,不是通過native方法來實(shí)現(xiàn)的,所以Swing的窗口風(fēng)格更多樣化。但是,Swing里面也有heaveyweight組件。比如JWindow,Dialog,JFrame
Swing由純Java寫成,可移植性好,外觀在不同平臺(tái)上相同。所以Swing部件稱為輕量級(jí)組件( Swing是由純JAVA?CODE所寫的,因此SWING解決了JAVA因窗口類而無法跨平臺(tái)的問題,使窗口功能也具有跨平臺(tái)與延展性的特性,而且SWING不需占有太多系統(tǒng)資源,因此稱為輕量級(jí)組件!!!
所以這題選D,我是歌謠,歡迎談?wù)勀愕睦斫狻?/p>
文章僅個(gè)人理解,來在各大網(wǎng)站。如有不合理之處,歡迎吐槽。
閱讀目錄(置頂)(長(zhǎng)期更新計(jì)算機(jī)領(lǐng)域知識(shí))https://blog.csdn.net/weixin_43392489/article/details/102380691
閱讀目錄(置頂)(長(zhǎng)期更新計(jì)算機(jī)領(lǐng)域知識(shí))https://blog.csdn.net/weixin_43392489/article/details/102380882
閱讀目錄(置頂)(長(zhǎng)期科技領(lǐng)域知識(shí))https://blog.csdn.net/weixin_43392489/article/details/102600114
歌謠帶你看java面試題 https://blog.csdn.net/weixin_43392489/article/details/102675944
?
總結(jié)
以上是生活随笔為你收集整理的java面试题7 牛客:关于AWT和Swing说法正确的是?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: coreseek mysql.sock_
- 下一篇: 类从未使用_如果您从未依赖在线销售,如何
