Java的圖形用戶界面(GUI)可以使用兩種不同的類庫來創建,一種是AWT,另一種是Swing。雖然這兩種庫都是Java的標準庫,但是它們之間有一些明顯的區別。
AWT是Abstract Window Toolkit的縮寫,它是Java最初的GUI庫,它是面向本地操作系統的,也就是說它使用本機的窗口系統和小部件來繪制GUI組件。因此,AWT的應用程序在不同的平臺,如Windows,Linux,macOS等上可能會有不同的外觀和行為。
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是一個獨立的GUI類庫,它并不依賴于本機窗口系統。因此,Swing的應用程序在所有平臺上都具有相同的外觀和行為。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(); } }
總結來說,AWT的應用程序在不同平臺上有不同的外觀和行為,而Swing的應用程序具有相同的外觀和行為。AWT更接近本機窗口系統,而Swing提供了更多的組件和更高的靈活性。
上一篇css中設置內填充
下一篇Python畫紫荊花旗