2017-03-08 19 views
3

チュートリアルを見て同じことを試みましたが、コードはまったく同じですが、何も表示されません。私はそれがpaintComponentメソッドが呼び出されていないためだと思う、私はまたpaintComponentによってコンソールに何かを印刷しようとしました。ここでpaintComponentsメソッドがJavaで呼び出されていません

は私のコードです:

public class Line extends JPanel{ 

    @Override 
    public void paintComponents(Graphics g){ 
     super.paintComponent(g); 
     g.setColor(Color.red); 
     g.drawLine(100, 10, 30, 40); 

    } 
    public static void main(String[] args) { 
     Line l =new Line(); 

     JFrame myFrame = new JFrame("Line"); 
     myFrame.setSize(600, 400);   
     myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     myFrame.add(l); 
     myFrame.setVisible(true); 
    } 
} 

ありがとうございました!

+0

あなたは素晴らしいです!ありがとう! @Berger –

+0

はい申し訳ありませんが、コメントを削除しました。 's'が存在する' paintComponents'が存在しますが、あなたが上書きしたいのは 'paintComponent'です。 – Berger

+0

Bergerは忍者ですが、コメントや返信を見ることはできません。 :) –

答えて

3

オーバーライドするものはpaintComponentで、paintComponentsではsではありません。

paintComponentsは、現在のコンポーネントの子コンポーネントをペイントします(子コンポーネントがGraphicsオブジェクトにペイントするように子コンポーネントに指示します)。

paintComponentはコンポーネント自体をペイントします。これは、コンポーネントのカスタムペイントを行うためにオーバーライドするメソッドです。

関連する問題