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

Java 面向對象練習:Color 類別應用與 ClickMe Applet 修改

     編輯:Java 相關知識

練習背景

本節測試對 Java 面向對象核心概念(物件、類別、訊息傳遞)的理解,並透過修改 ClickMe Applet 實作顏色與繪圖操作。

問題與解答

Q1: ClickMe 使用 Color.red 設定紅色,還有哪些預定義顏色常數?

java.awt.Color 類別提供 13 個標準顏色常數:

常數名稱顏色RGB 值
Color.black黑色(0, 0, 0)
Color.blue藍色(0, 0, 255)
Color.cyan青色(0, 255, 255)
Color.darkGray深灰(64, 64, 64)
Color.gray灰色(128, 128, 128)
Color.green綠色(0, 255, 0)
Color.lightGray淺灰(192, 192, 192)
Color.magenta洋紅(255, 0, 255)
Color.orange橙色(255, 200, 0)
Color.pink粉紅(255, 175, 175)
Color.red紅色(255, 0, 0)
Color.white白色(255, 255, 255)
Color.yellow黃色(255, 255, 0)

另有 Color.getHSBColor(h, s, b) 依 HSB 模式建立顏色,new Color(r, g, b) 自訂 RGB。

Q2: 如何設定紫色?

紫色非預設常數,有三種做法:

// 1. RGB 建構子 (紅+藍)
Color purple = new Color(128, 0, 128);  // 標準紫
// 或
Color purple = new Color(160, 32, 240);  // 亮紫

// 2. HSB 建立 (色相 270° = 紫色系)
Color purple = Color.getHSBColor(0.75f, 1.0f, 0.5f);

// 3. 16進位整數 (JDK 1.4+)
Color purple = new Color(0x800080);

實作練習:修改 ClickMe Applet

前置需求:需有 Spot.java 輔助類別,完整專案結構請參考教學原始碼。

練習 1:繪製綠色方框取代紅點

import java.applet.Applet;
import java.awt.*;

public class ClickMe extends Applet {
    Spot spot;
    
    public void init() {
        spot = new Spot();
        setBackground(Color.white);
    }
    
    public void paint(Graphics g) {
        // 原本:g.setColor(Color.red); g.fillOval(...);
        // 修改為綠色方框
        g.setColor(Color.green);
        g.fillRect(spot.x - 10, spot.y - 10, 20, 20);  // 20x20 方框置中於點擊位置
    }
    
    public boolean mouseDown(Event e, int x, int y) {
        spot.x = x;
        spot.y = y;
        repaint();
        return true;
    }
}

關鍵差異:

  • fillOval → fillRect
  • Color.red → Color.green
  • 座標計算調整使方框中心對齊滑鼠點擊點

練習 2:以紫色顯示名字取代紅點

public void paint(Graphics g) {
    g.setColor(new Color(128, 0, 128));  // 紫色
    g.setFont(new Font("SansSerif", Font.BOLD, 24));
    g.drawString("Your Name", spot.x, spot.y);  // 在點擊位置繪製文字
}

補充說明:

  • drawString 基準點為文字左下角,非中心
  • 可用 FontMetrics 計算文字寬高以實現置中
  • Applet 需在瀏覽器或 appletviewer 中執行

核心概念複習

  1. 物件:spot (Spot 實例)、g (Graphics 實例)、Color.green (Color 實例)
  2. 類別:Spot, Graphics, Color, Applet, Font
  3. 訊息:g.setColor(), g.fillRect(), repaint(), spot.x = x
  4. 方法:paint(), mouseDown(), init(), setColor(), fillRect()
  5. 實例變數:spot.x, spot.y

延伸思考

  • 若要支援多種形狀/顏色,可引入「策略模式」封裝繪圖行為
  • 現代 Java GUI 開發已轉向 Swing/JavaFX,Applet 為歷史教學用途
  • 事件處理從 mouseDown(Event) 演進為 Listener 模式 (MouseListener)

透過此練習,可驗證對「物件協作、方法呼叫、狀態封裝」等 OO 基礎概念的掌握程度。

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