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);
}
}
evt.getX() 相對組件,加 bounds.x/y 轉螢幕絕對座標mousePressedshow()
JFrame/JPanel) 替代 AWT,獲得雙重緩衝、外觀主題、豐富組件JDialog + setModal(true)) 替代非模態 FrameAWT 事件模型簡單直觀,適合理解 Java GUI 事件機制基礎。實務開發**強烈建議使用 Swing/JavaFX**,獲得更豐富功能、更好跨平台一致性、更現代的 API 設計。