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

Java 畫圖板實戰:從監聽器到圖形繪製完整實現

     編輯:Java 相關知識

功能清單

  • 繪製工具:鉛筆、橡皮擦、直線、橢圓、矩形、圓角矩形、填充隨機線
  • 顏色選擇:預設 12 色面板 + JColorChooser 自定義顏色(最多保存 6 個自定義色)
  • 狀態欄:實時顯示鼠標座標、當前繪製圖形尺寸
  • 單選按鈕組(ButtonGroup)切換工具,圖標反饋按下/選中狀態

架構分層

  • Draw (JFrame):BorderLayout 佈局四區域(北:顏色面板、西:工具欄、中:畫布、南:狀態欄),初始化組件、註冊監聽器
  • DrawListener (extends MouseAdapter):實現 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 等)。

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