MouseListener、MouseMotionListener,處理按下/拖拽/釋放/移動事件,根據當前工具調用 Graphics 繪製// 鉛筆:連續畫線段
if ("pencil".equals(cmd)) {
g.drawLine(x1, y1, x2, y2);
x1 = x2; y1 = y2; // 更新起點
}
// 橡皮:畫白色寬線模擬擦除
else if ("eraser".equals(cmd)) {
g.setColor(Color.WHITE);
for (int i = -8; i < 8; i++) {
g.drawLine(x1+i, y1+i, x2+i, y2+i);
}
x1 = x2; y1 = y2;
}
// 直線/橢圓/矩形:釋放時根據起終點畫幾何圖形
else if ("Line".equals(cmd)) {
g.drawLine(x1, y1, x2, y2);
} else if ("oval".equals(cmd)) {
g.drawOval(Math.min(x1,x2), Math.min(y1,y2), Math.abs(x1-x2), Math.abs(y1-y2));
}
// ... 其他圖形類似
JColorChooser.showDialog() 選色,循環填入 6 個自定義色按鈕工具圖標截取自 Windows 畫圖板,附件提供 back/ 目錄下的圖片(Line.jpg, oval.jpg 等及按下態 Line1.jpg 等)。