2017-04-23 61 views
-1

在我問這個問題之前,我已經檢查過其他人的問題,看看有沒有人有解決方案,我嘗試了一些,但它不工作。我問你,也許有別的事情,我的程序需要比別人沒有。在課堂上調用super.paintcomponent(g)不起作用

任何人都可以告訴我這個小小的和平代碼有什麼問題嗎?

package DrawPanel; 
import java.awt.Graphics; 
import javax.swing.JPanel; 
public class DrawPanel 
{ 
    private int getHeight() 
    { return 0; } 
    private int getWidth() 
    { return 0; } 
    public void paintComponent(Graphics g) 
    { 
     super.paintComponent(g); // line of error => paintComponent 
     int width = getWidth(); 
     int height = getHeight(); 
     g.drawLine(0, 0,width,height); 
     g.drawLine(0, height, width, 0); 
    } 
} 

這裏的其他代碼來運行它:

package DrawPanel; 
import java.awt.Component; 
import javax.swing.JFrame; 
public class DrawPanelTest 
{ 
    public static void main (String [] Args) 
    { 
     DrawPanel panel = new DrawPanel(); 

     JFrame application = new JFrame(); 

     application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     application.add(panel); //Line of error => add 
     application.setSize(500,500); 
     application.setVisible(true); 
    } 
} 

現在,如果我刪除錯誤行,應用程序將正常工作,但不是100%。 它不會顯示我畫的線條。它只會給我打開一扇窗戶。如何使應用程序正常工作? 謝謝。

+1

您的'DrawPanel'類不擴展任何其他類。所以,「超級」毫無意義。 –

回答

4
public class DrawPanel extends JPanel 
{ 
    public void paintComponent(Graphics g) 
    { 
     super.paintComponent(g); 
     int width = getWidth(); 
     int height = getHeight(); 
     g.drawLine(0, 0,width,height); 
     g.drawLine(0, height, width, 0); 
    } 
} 

您應該延伸JPanel

super指直接父母財產。所以在你的情況下,你不能調用超類,因爲DrawPanel沒有父類。您可以通過添加extends JPanel來解決該問題,這也將解決您的main方法中的.add()問題。 .add()期望Component

+0

通過把這個代碼,它給了我2個更多的錯誤。 getHeight() getWeidth() – BladeStreak

+0

好吧,它的工作。但我不得不刪除以下代碼:private int getHeight(){return 0; } private int getWidth(){return 0; } – BladeStreak