Java的圖形用戶界面(GUI)可以使用兩種不同的類庫(kù)來創(chuàng)建,一種是AWT,另一種是Swing。雖然這兩種庫(kù)都是Java的標(biāo)準(zhǔn)庫(kù),但是它們之間有一些明顯的區(qū)別。
AWT是Abstract Window Toolkit的縮寫,它是Java最初的GUI庫(kù),它是面向本地操作系統(tǒng)的,也就是說它使用本機(jī)的窗口系統(tǒng)和小部件來繪制GUI組件。因此,AWT的應(yīng)用程序在不同的平臺(tái),如Windows,Linux,macOS等上可能會(huì)有不同的外觀和行為。
import java.awt.*; import java.awt.event.*; public class AWTExample extends Frame { private Label lblCount; private TextField tfCount; private Button btnCount; public AWTExample() { setLayout(new FlowLayout()); lblCount = new Label("Counter"); add(lblCount); tfCount = new TextField("0", 10); tfCount.setEditable(false); add(tfCount); btnCount = new Button("Count"); add(btnCount); BtnCountListener listener = new BtnCountListener(); btnCount.addActionListener(listener); setTitle("AWT Example"); setSize(250, 100); setVisible(true); } private class BtnCountListener implements ActionListener { private int count = 0; public void actionPerformed(ActionEvent e) { count++; tfCount.setText(count + ""); } } public static void main(String[] args) { new AWTExample(); } }
與AWT不同,Swing是一個(gè)獨(dú)立的GUI類庫(kù),它并不依賴于本機(jī)窗口系統(tǒng)。因此,Swing的應(yīng)用程序在所有平臺(tái)上都具有相同的外觀和行為。Swing是JFC的一部分,它是AWT的替代品,提供了更豐富的組件(如JButton,JLabel,JTextField等比AWT更具有定制性)。
import javax.swing.*; import java.awt.*; import java.awt.event.*; public class SwingExample { private JLabel lblCount; private JTextField tfCount; private JButton btnCount; private JFrame frame; private int count = 0; public SwingExample() { frame = new JFrame("Swing Example"); frame.setLayout(new FlowLayout()); lblCount = new JLabel("Counter"); frame.add(lblCount); tfCount = new JTextField("0", 10); tfCount.setEditable(false); frame.add(tfCount); btnCount = new JButton("Count"); frame.add(btnCount); btnCount.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { count++; tfCount.setText(count + ""); } }); frame.setSize(200, 100); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } public static void main(String[] args) { SwingExample swingExample = new SwingExample(); } }
總結(jié)來說,AWT的應(yīng)用程序在不同平臺(tái)上有不同的外觀和行為,而Swing的應(yīng)用程序具有相同的外觀和行為。AWT更接近本機(jī)窗口系統(tǒng),而Swing提供了更多的組件和更高的靈活性。