2013-05-16 34 views
0

我想知道爲什麼setBackground()方法實際上並沒有使背景變黑。我覺得這與實現JApplet的類而不是Applet有關,但我無法弄清楚具體細節。這真的讓我煩惱。任何幫助表示讚賞!JApplet setBackground不工作

import javax.swing.*; 
import java.awt.*; 

public class Rocket extends JApplet 
{ 
    private final int APPLET_WIDTH = 200; 
    private final int APPLET_HEIGHT = 200; 

    private int[] xRocket = {100, 120, 120, 130, 130, 70, 70, 80, 80}; 
    private int[] yRocket = {15, 40, 115, 125, 150, 150, 125, 115, 40}; 

    private int[] xWindow = {95, 105, 110, 90}; 
    private int[] yWindow = {45, 45, 70, 70}; 

    private int[] xFlame = {70, 70, 75, 80, 90, 100, 110, 115, 120, 130, 130}; 
    private int[] yFlame = {155, 170, 165, 190, 170, 175, 160, 185, 160, 175, 155}; 

    public void init() 
    { 
     setBackground (Color.black); 
     setSize (APPLET_WIDTH, APPLET_HEIGHT); 
    } 

    public void paint (Graphics page) 
    { 
     page.setColor (Color.cyan); 
     page.fillPolygon (xRocket, yRocket, xRocket.length); 

     page.setColor (Color.gray); 
     page.fillPolygon (xWindow, yWindow, xWindow.length); 

     page.setColor (Color.red); 
     page.drawPolyline (xFlame, yFlame, xFlame.length); 
    } 
} 
+0

'private final int APPLET_WIDTH = 200;'一個applet的大小在加載它的HTML中設置。不要試圖強制代碼中的大小。 –

回答

2

坐落在ContentPane,而不是父小程序組件

getContentPane().setBackground(Color.BLACK); 

除了在顏色:

對於風俗畫在Swing覆蓋paintComponent而非paintJApplet不是JComponent的子類,因此需要基於此的新組件來執行此操作。確保調用super.paintComponent(g)

+0

謝謝!我現在有一個新問題。我遵循你的指示,現在Applet產生一個黑色頁面。由於「無法找到符號」錯誤,super.paintComponent(g)方法不編譯。這是什麼原因? – user2390752

+0

如上所述,'JApplet'不會擴展'JComponent',因此您需要創建一個擴展'JComponent'的新類。如果這不是問題,請將新代碼附加到您的問題。 – Reimeus