雖然現代 Java 桌面開發多用 Swing/JavaFX,但理解 AWT 基礎組件(MenuBar、Menu、MenuItem)有助於掌握事件驅動模型核心。本文通過完整範例示範如何建立含「檔案→退出」選單的視窗程式。
| 類別 | 說明 |
|---|---|
Frame | 頂層視窗容器,呼叫 setMenuBar() 安裝選單列 |
MenuBar | 選單列容器,持有多個 Menu |
Menu | 下拉選單,可包含 MenuItem 或子 Menu |
MenuItem | 具體選單項目,觸發 ActionEvent |
import java.awt.*;
import java.awt.event.*;
public class MenuBarDemo {
private Frame frame;
private MenuBar menuBar;
private Menu menu;
private MenuItem menuItem;
public MenuBarDemo() {
init();
addEvents();
}
private void init() {
frame = new Frame("選單測試");
frame.setBounds(300, 200, 500, 400);
frame.setLayout(new FlowLayout());
// 建立選單結構
menuBar = new MenuBar();
menu = new Menu("檔案");
menuItem = new MenuItem("退出");
menu.add(menuItem);
menuBar.add(menu);
frame.setMenuBar(menuBar);
frame.setVisible(true);
}
private void addEvents() {
// 視窗關閉事件
frame.addWindowListener(new WindowAdapter() {
@Override public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
// 選單點擊事件
menuItem.addActionListener(e -> System.exit(0));
}
public static void main(String[] args) {
new MenuBarDemo();
}
}
MenuItem → Menu → MenuBar → Frame。ActionListener 處理點擊,WindowAdapter 處理關閉按鈕。
實際專案建議改用 Swing (JFrame, JMenuBar) 或 JavaFX,獲得更豐富的元件、現代外觀與更好的執行緒模型。AWT 僅作為教學與輕量級嵌入式場景使用。