2010-05-19 84 views

回答

1

原始的Java用戶界面類被稱爲AWT。這些是「重量級」組件,有時在不同系統(Windows,Mac,Unix)上的表現有所不同。這些組件很難用來製作GUI。

Sun開發的Swing是一組「輕量級」組件,儘可能最大程度地在不同系統上工作。這些組件使GUI開發變得更容易。

爲了有一個圖形畫布,您可以從一個javax.swing.JFrame開始。您將一個javax.swing.JPanel子項添加到JFrame中。通過重寫paint方法來繪製JPanel。

JPanel paint方法將java.awt.Graphics作爲輸入。您可以將Graphics轉換爲java.awt.Graphics2D。 Graphics2D的方法允許您繪製矩形,圖像,文本,線條和任意多邊形。

您可以通過閱讀Sun的Creating a GUI with JFC/Swing教程來了解關於Swing的更多信息。您可以通過閱讀Sun的2D Graphics教程來了解更多關於2D圖形的信息。關於我提到的Java類的更多細節可以在Javadoc中找到。

+1

「重寫打印方法」 - 我認爲你的意思是「繪畫方法」。 – 2010-05-20 00:00:55

+0

你是對的。我糾正了我的答案。感謝您指出錯誤。 – 2010-05-20 00:13:41

3

您可以通過paint方法的任何AWT/Swing組件得到一個Graphics/Graphics2D的實例。 JPanel可能是最好的,因爲它適合於swing並且是輕量級的,這意味着只有一個本地窗口被創建 - 用於頂層窗口。 Swing組件也可以是雙緩衝的,這意味着繪畫在被傳送到屏幕之前首先完成到離屏緩衝區。這樣可以提供更平滑的外觀,並避免直接在屏幕上繪畫時可能發生的閃爍,並且對於流暢的動畫尤爲重要。

您可以特別繪製一個可以在以後使用的離線緩衝區(「位圖」),例如,稍後繪製圖像以作爲文件保存:

BufferedImage offImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); 
    Grapics2D g2 = offImg.createGraphics(); 

    // .. optionally set attributes .. 
    g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); 
相關問題