paint()以外でサブ関数を作りたい
今晩は、java初心者です、宜しくお願いします。
下の様なウインドウに文字を書くサブ関数を作りましたが、うまく実行出来ません。
しかし、public void paint( Graphics g){ }の中に書いてやるとうまく文字が表示されます。
何故か理由が分かりません。
public void paint( Graphics g ){ }は、Componentクラスのメッソドをオーバーライドしている
だけなので、別名のサブ関数で「Graphics g」を引数にとれば同じ考えだと思うのですが、
実行出来ない理由が理解できません。
public void drawLetter( Graphics g )としても、エラーが出るばかりです。
その原因が分かりません、宜しくお願いします。
====================================================================
public void drawLetter( )
{
Graphics aa = getGraphics() ;
aa.setFont( new Font( "MS ゴシック" , Font.BOLD , 15 ) ) ;
aa.setColor( Color.green ) ;
aa.drawString( "String" , 0 , 0 ) ;
}
=============================================================
public class P1 extends Applet
{
public void init()
{
setBackground( Color.cyan ) ;
setSize( 600 , 600 ) ;
drawLetter( ) ;
}
public void drawLetter( )
{
Graphics aa = getGraphics() ;
aa.setFont( new Font( "MS ゴシック" , Font.BOLD , 15 ) ) ;
aa.setColor( Color.green ) ;
aa.drawString( "String" , 0 , 0 ) ;
}
public void paint( Graphics g )
{
g.setColor( Color.RED ) ;
g.drawOval( 300 , 300 , 70 , 70 ) ;
g.setColor( Color.RED ) ;
g.fillOval( 200 , 200 , 30 , 30 ) ;
/*
g.setFont( new Font( "MS ゴシック" , Font.BOLD , 15 ) ) ;
g.setColor( Color.BLUE ) ;
g.drawString( "Orbit" , 50 , 50 ) ;
*/
}
}
=======================================================================
お礼
なるほど。Canvasインスタンスを呼ぶとpaintメソッドも自動で呼ばれその引数のインスタンスも自動で作るという一連の流れがあるのですね。 因みに、理解する必要が無いというのは… 説明や理解するのが困難だからでしょうか? それとも、(例えば)OSやVM、BREW、CLDCなどのバックグラウンドでの活動によるので、 そういう仕様はjava組み込み系ではブラックボックスとして開発者は一般的に 触れるべきではないという事でしょうか?