2012-09-21 32 views
1

我是java新手,我正在創建一個applet。我遇到了一些問題,我無法使用任何繪圖函數繪製任何東西。我知道我的代碼並不完美,但我會很感激任何幫助。在java applets中繪製圖像時的問題

這是我的代碼:

import java.applet.Applet; 
import java.awt.Graphics; 
import java.awt.Image; 
import java.awt.Color; 

public class CardsJavaProgram extends Applet { 

    public void init(){ 
    this.setBackground(Color.blue); 

    } 
    public void paint(Graphics screen){ 
    int x = 10; 
    int y = 10; 
    int x2 = 10; 
    int y2 = 110; 
     Image c1 = getImage (getDocumentBase(), "cards/c1.gif"); 
     Image c2 = getImage (getDocumentBase(), "cards/c2.gif"); 
     Image c3 = getImage (getDocumentBase(), "cards/c3.gif"); 
     Image c4 = getImage (getDocumentBase(), "cards/c4.gif"); 
     Image c5 = getImage (getDocumentBase(), "cards/c5.gif"); 
     Image c6 = getImage (getDocumentBase(), "cards/c6.gif"); 
     Image c7 = getImage (getDocumentBase(), "cards/c7.gif"); 
     Image c8 = getImage (getDocumentBase(), "cards/c8.gif"); 
     Image c9 = getImage (getDocumentBase(), "cards/c9.gif"); 
     Image c10 = getImage (getDocumentBase(), "cards/c10.gif"); 
     Image cj = getImage (getDocumentBase(), "cards/cj.gif"); 
     Image cq = getImage (getDocumentBase(), "cards/cq.gif"); 
     Image ck = getImage (getDocumentBase(), "cards/ck.gif"); 
     Image h1 = getImage (getDocumentBase(), "cards/h1.gif"); 
     Image h2 = getImage (getDocumentBase(), "cards/h2.gif"); 
     Image h3 = getImage (getDocumentBase(), "cards/h3.gif"); 
     Image h4 = getImage (getDocumentBase(), "cards/h4.gif"); 
     Image h5 = getImage (getDocumentBase(), "cards/h5.gif"); 
     Image h6 = getImage (getDocumentBase(), "cards/h6.gif"); 
     Image h7 = getImage (getDocumentBase(), "cards/h7.gif"); 
     Image h8 = getImage (getDocumentBase(), "cards/h8.gif"); 
     Image h9 = getImage (getDocumentBase(), "cards/h9.gif"); 
     Image h10 = getImage (getDocumentBase(), "cards/h10.gif"); 
     Image hj = getImage (getDocumentBase(), "cards/hj.gif"); 
     Image hq = getImage (getDocumentBase(), "cards/hq.gif"); 
     Image hk = getImage (getDocumentBase(), "cards/hk.gif"); 
     Image d1 = getImage (getDocumentBase(), "cards/d1.gif"); 
     Image d2 = getImage (getDocumentBase(), "cards/d2.gif"); 
     Image d3 = getImage (getDocumentBase(), "cards/d3.gif"); 
     Image d4 = getImage (getDocumentBase(), "cards/d4.gif"); 
     Image d5 = getImage (getDocumentBase(), "cards/d5.gif"); 
     Image d6 = getImage (getDocumentBase(), "cards/d6.gif"); 
     Image d7 = getImage (getDocumentBase(), "cards/d7.gif"); 
     Image d8 = getImage (getDocumentBase(), "cards/d8.gif"); 
     Image d9 = getImage (getDocumentBase(), "cards/d9.gif"); 
     Image d10 = getImage (getDocumentBase(), "cards/d10.gif"); 
     Image dj = getImage (getDocumentBase(), "cards/dj.gif"); 
     Image dq = getImage (getDocumentBase(), "cards/dq.gif"); 
     Image dk = getImage (getDocumentBase(), "cards/dk.gif"); 
     Image s1 = getImage (getDocumentBase(), "cards/s1.gif"); 
     Image s2 = getImage (getDocumentBase(), "cards/s2.gif"); 
     Image s3 = getImage (getDocumentBase(), "cards/s3.gif"); 
     Image s4 = getImage (getDocumentBase(), "cards/s4.gif"); 
     Image s5 = getImage (getDocumentBase(), "cards/s5.gif"); 
     Image s6 = getImage (getDocumentBase(), "cards/s6.gif"); 
     Image s7 = getImage (getDocumentBase(), "cards/s7.gif"); 
     Image s8 = getImage (getDocumentBase(), "cards/s8.gif"); 
     Image s9 = getImage (getDocumentBase(), "cards/s9.gif"); 
     Image s10 = getImage (getDocumentBase(), "cards/s10.gif"); 
     Image sj = getImage (getDocumentBase(), "cards/sj.gif"); 
     Image sq = getImage (getDocumentBase(), "cards/sq.gif"); 
     Image sk = getImage (getDocumentBase(), "cards/sk.gif"); 

     Image [] cards = new Image [ 52 ]; 
     cards [ 0 ] = c1; 
     cards [ 1 ] = c2; 
     cards [ 2 ] = c3; 
     cards [ 3 ] = c4; 
     cards [ 4 ] = c5; 
     cards [ 5 ] = c6; 
     cards [ 6 ] = c7; 
     cards [ 7 ] = c8; 
     cards [ 8 ] = c9; 
     cards [ 9 ] = c10; 
     cards [ 10 ] = cj; 
     cards [ 11 ] = cq; 
     cards [ 12 ] = ck; 
     cards [ 13 ] = h1; 
     cards [ 14 ] = h2; 
     cards [ 15 ] = h3; 
     cards [ 16 ] = h4; 
     cards [ 17 ] = h5; 
     cards [ 18 ] = h6; 
     cards [ 19 ] = h7; 
     cards [ 20 ] = h8; 
     cards [ 21 ] = h9; 
     cards [ 22 ] = h10; 
     cards [ 23 ] = hj; 
     cards [ 24 ] = hq; 
     cards [ 25 ] = hk; 
     cards [ 26 ] = d1; 
     cards [ 27 ] = d2; 
     cards [ 28 ] = d3; 
     cards [ 29 ] = d4; 
     cards [ 30 ] = d5; 
     cards [ 31 ] = d6; 
     cards [ 32 ] = d7; 
     cards [ 33 ] = d8; 
     cards [ 34 ] = d9; 
     cards [ 35 ] = d10; 
     cards [ 36 ] = dj; 
     cards [ 37 ] = dq; 
     cards [ 38 ] = dk; 
     cards [ 39 ] = s1; 
     cards [ 40 ] = s2; 
     cards [ 41 ] = s3; 
     cards [ 42 ] = s4; 
     cards [ 43 ] = s5; 
     cards [ 44 ] = s6; 
     cards [ 45 ] = s7; 
     cards [ 46 ] = s8; 
     cards [ 47 ] = s9; 
     cards [ 48 ] = s10; 
     cards [ 49 ] = sj; 
     cards [ 50 ] = sq; 
     cards [ 51 ] = sk; 
    screen.drawImage(getImage (getDocumentBase(), "cards/c1.gif"), 100, 100, this); 
    screen.drawImage(getImage (getDocumentBase(), "cards/c1.gif"), 10, 10, this); 
    screen.drawImage(getImage (getDocumentBase(), "cards/c1.gif"), 50, 50, this); 
    screen.drawString(" test ", 10, 10, this); 
    /*for (int i = 0; i < 4; i++){ 
     screen.drawImage (cards[(int) (float) Math.random() * 52 - 1], x, y, this); 
     x = x + 5; 
    } 
    for (int i = 0; i < 4; i++){ 
     screen.drawImage (cards [(int) (float) (Math.random()) * 52 - (int) (1)], x2, y2, this); 
     x = x + 10; 
    }*/ 
    } 





} 

我創建的索引,所有的文件都在正確的地方。

+2

只是一個想法 - 而不是硬編碼104線填補了甲板,可以考慮使用'for'循環,或更好地與13項填補本身就是一個'Suite'類。 – moonwave99

+0

我不知道如何創建一個循環來更改每個循環的變量名稱,我不知道套件類是什麼。請解釋一下,謝謝 – user1690013

回答

3
Image c1 = getImage (getDocumentBase(), "cards/c1.gif"); 

這些行在paint(Graphics)方法中。切勿嘗試在油漆上進行I/O或其他耗時的工作(如加載「甲板滿」圖像)!

的圖像應該被聲明爲類屬性(任何方法之外聲明)是這樣的:

Image c1; 

然後在init()加載。

c1 = getImage (getDocumentBase(), "cards/c1.gif"); 
+0

還請記住,java.awt.Image通常是無緩衝的。也就是說,直到需要時纔會加載圖像數據。做你正在做的事情將放棄先前的加載請求並重新開始,導致圖像永遠無法加載。 – MadProgrammer

+0

非常感謝你 – user1690013

1

我建議您修復您的代碼以避免硬編碼值。

您正在擴展Applet類,該類定義了一種繪製方法本身,因此您必須先調用基礎繪製方法,使用super.paint(screen),同時我建議您檢查是否真的加載了您獲取的圖像那裏。

此外,小程序的一個非常常見的錯誤是類沒有被加載,所以看看Java控制檯,看看是否有任何加載器錯誤,作爲建議,你可以使這個框架應用程序和稍後將其翻譯成Applet。

+0

+1'super.paint(screen)' - 我忘了提及它。 –

-1
Image picture; 
picture = getImage(getDocumentBase(),"sonoo.jpg"); 
g.drawImage(picture, 30,30, this); 
0
Here is the complete code to display the image 

Kindly refer through it 
/*Arpana*/ 

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

/* 
<applet code="Img" width=500 height=500> 
</applet> 
*/ 

public class Img extends Applet 
{ 
    Image image; 
    public void init() 
    { 
     image=getImage(getCodeBase(),"Appu.jpg"); 
    } 
    public void paint(Graphics g) 
    { 
     g.drawImage(image,0,0,this); 
    } 
}