首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java AWT 鼠標點擊彈出新窗口實戰

     編輯:Java 相關知識

核心思路

  • 繼承 Frame 作為主窗口
  • 添加 MouseListener(通過 MouseAdapter 簡化)
  • 點擊事件中獲取點擊座標,創建新 Frame 實例並定位顯示
  • WindowAdapter 處理關閉事件

完整代碼


package test;

import java.awt.*;
import java.awt.event.*;

public class java3 extends Frame {
    public java3() {
        super("Java 鼠標彈窗演示");
        addNotify(); // 創建原生對等體
        addWindowListener(new WindowAdapter() {
            @Override public void windowClosing(WindowEvent e) { System.exit(0); }
        });
        Insets insets = getInsets();
        setSize(insets.left + insets.right + 150, insets.top + insets.bottom + 150);
        addMouseListener(new MouseEventHandler());
    }

    class MouseEventHandler extends MouseAdapter {
        @Override
        public void mousePressed(MouseEvent evt) {
            Rectangle bounds = getBounds();
            int x = evt.getX() + bounds.x;
            int y = evt.getY() + bounds.y;
            java3 m = new java3();
            m.setLocation(x, y);
            m.setVisible(true); // 替代舊版 show()
        }
    }

    public static void main(String[] args) {
        new java3().setVisible(true);
    }
}

關鍵技術點

  1. 座標轉換:evt.getX() 相對組件,加 bounds.x/y 轉螢幕絕對座標
  2. 遞歸創建:每次點擊 `new java3()`,形成窗口樹(演示用,實務需控制數量)
  3. MouseAdapter:空實現所有方法,僅覆寫關心的 mousePressed
  4. setVisible(true):替代過時的 show()

效果演示

鼠標點擊彈窗效果

現代化改造建議

  • 改用 Swing (JFrame/JPanel) 替代 AWT,獲得雙重緩衝、外觀主題、豐富組件
  • 單例/池化管理彈出窗口,避免無限創建導致資源耗盡
  • 模態對話框 (JDialog + setModal(true)) 替代非模態 Frame
  • 座標邊界檢查,防止窗口超出螢幕可視區

總結

AWT 事件模型簡單直觀,適合理解 Java GUI 事件機制基礎。實務開發**強烈建議使用 Swing/JavaFX**,獲得更豐富功能、更好跨平台一致性、更現代的 API 設計。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved