跳轉到內容

畫布

100% developed
來自華夏公益教科書

導航 使用者介面 主題:v  d  e )


Java 程式設計中一個必不可少的部分要求您為自己構建令人興奮的新使用者介面。內置於 Java 框架中的元件是常規的 UI 元素,但是為了獲得更豐富的體驗,您需要自己的控制元件。例如,圖表應用程式。Java API 中沒有內建任何圖表工具。您需要手動繪製圖表。

從一開始,編碼繪製就相當令人生畏,但一旦您瞭解了 Java 中圖形程式設計的基礎知識,您就可以在短時間內建立優雅的圖形和藝術品。但是,人們腦海中出現的疑問是,要畫在什麼上面呢?這個問題的答案比看起來簡單。您可以開始在 Java 框架中的任何元件上繪製。無論是面板、視窗,甚至按鈕。

讓我為您分解一下。Java 語言中的元件是一個從 Component 類派生的類。每個元件都有一個方法,其簽名為 paint(Graphics),可以重寫以在它上面手動繪製某些內容。

重寫 paint(Graphics) 方法

[編輯 | 編輯原始碼]

以下是一個關於如何重寫上述方法的示例。對於這個具體的示例,我們將使用的元件類是 Canvas 類。有關 Canvas 類的更多資訊,請參見有關 瞭解 Canvas 類 部分

Computer code 程式碼清單 9.1:初始化 Canvas 類
import java.awt.*;

public class MyCanvas extends Canvas {

    public MyCanvas() {
        //...
    }

    public void paint(Graphics graphics) {
        /* We override the method here. The graphics
         * code comes here within the method body. */
    }
}

瞭解 Canvas

[編輯 | 編輯原始碼]

程式碼清單 9.1 展示了在 Java 中啟用圖形功能的語法的簡單性和強大功能。讓我們從瞭解 Canvas 類做了什麼開始。一個 Canvas 類是 Component 類的派生類或子類,當放在 Frame 上時,顯示為一個空白區域。

為了繪製圖形,您可以使用任何其他從 Component 類派生的類,例如 JPanel,甚至 JTextFieldJButton。我們使用 Canvas 類純粹是為了理解 Java 中的繪製概念。

注意
注意每個類名稱之前的 J。這表明這些類是 Java Swing 庫的一部分。Swing 比 AWT 在 Java 中繪製表示式方面提供了更多自由。

讓我們改進上面的程式碼,使該類可執行,並顯示 Canvas。為此,我們將新增一個入口點方法,即 main(String[]) 方法,並在其主體中呼叫 JFrame 類來載入 Canvas。

Computer code 程式碼清單 9.2:在 JFrame 上方顯示 Canvas 類
import java.awt.*;
import javax.swing.*;

public class MyCanvas extends Canvas {
    public MyCanvas() {
    }

    public void paint(Graphics graphics) {
    }

    public static void main(String[] args) {
        // We initialize our class here
        MyCanvas canvas = new MyCanvas();
        JFrame frame = new JFrame();
        frame.setSize(400, 400);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        // Here we add it to the frame
        frame.getContentPane().add(canvas);
        frame.setVisible(true);
    }
}

以下程式碼現在幫助我們的類變得可執行,並在顯示時在框架上方顯示 Canvas。執行此類將導致一個空框架,但是應該清楚的是 Canvas 位於框架頂部,只是尚未顯示任何繪製內容。

圖 9.1:JFrame 上方的一個空白 Canvas

獲取、設定、繪製!

[編輯 | 編輯原始碼]

現在,我們已經制定了程式的基本結構,我們需要探索如何透過編寫 Java 程式碼來實際進行繪製。轉到下一節,嘗試繪製基本形狀和線條。但是,當您仍然對 Canvas 的概念比較陌生時,為什麼不測試一下您的知識呢?嘗試回答以下問題。

問題 9.1:在 Java 中使用哪些類來繪製?

  1. 任何從 Object 類派生的類。
  2. 任何從 Component 類派生的類。
  3. 以上都不是。
答案

2
Object 類派生的類不是可見元件,而從 Component 類派生的類是位於 Container 之上的可見實體,因此是顯示圖形的理想候選者。

問題 9.2:為了啟用繪製,需要覆蓋哪種方法?

  1. The main(String[]) 方法。
  2. The MyCanvas() 方法。
  3. The paint(Graphics) 方法。
  4. 以上都不是。
答案

3
如前所述,paint(Graphics) 方法是正確選項。名稱說明了一切。


華夏公益教科書