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