JAVA GUIプログラミング

JAVA GUIプログラミング
第2回
グラフィックスを使っての演習
グラフを描こう
前回の復習
絵を描く部分を次のように描くと・・
public void paint(Graphics g)
{
g.drawLine(100,100,200,200);
g.drawLine(200,100,300,200);
}
線が2本引けますね
今日は色をつけてみよう
public void paint(Graphics g)
{
g.setColor(Color.red);
g.drawLine(100,100,200,200);
g.setColor(Color.blue);
g.drawLine(200,100,300,200);
}
色の設定
setColor(色)のように設定します。
色には
Color.red
Color.blue
Color.yellow
Color.white
などなど、たくさんあります。
自分で色を作る
コンピュータの色の3源色(RGB)
赤
緑
青
をまぜて自分で色を作ることができます。
構文
setColor(new Color(赤,緑,青))
赤、緑、青には
0~255までの整数を代入します。
値は強さをさしています
例
setColor(new Color(0,0,0))
⇒黒
setColor(new Color(255,255,255))
⇒白
setColor(new Color(0,255,255))
⇒黄色
setColor(new Color(125,125,125))
⇒灰色
ではやってみましょう
public void paint(Graphics g)
{
g.setColor(new Color(200,0,150));
g.fillRect(100,100,200,50);
}
どうですか?
色を指定する方法はこんな感じです
いろいろと試してください(駄洒落ではありません)
次にjavaでfor文を使ってみましょう
for文
for(初期値の設定;継続条件;1回ごとの処理)
例
for(i=1;i<5;i++)
{
}
i++とはiに1を足すという意味です。
{ }の中は4回繰り返されます
for文のサンプル①
public void paint(Graphics g)
i+=10とは
{
int i;
iに10を足すという意味です
for(i=100;i<=300;i+=10)
このプログラムの結果を
{
想像してみてください
g.drawLine(100,i,i,300);
}
}
for文のサンプル②
public void paint(Graphics g)
{
int i;
for(i=0;i<=255;i++)
{
g.setColor(new Color(0,i,255-i));
g.drawLine(i,0,i,100);
}
}
これも結果を想像
してみよう!
色についてはここまで
次はグラフを描いてみましょう
座標系の違いに注意
描かせたいグラフの範囲を[-1,1]×[-1,1]とします。
画面のサイズを500×500とします。
数学上の座標を(x,y)とし
画面の座標を(x’,y’)とすると・・
x’=250+250x
y’=250-250y
となります。
プログラムの前に・・
これからy=x のグラフを描きます
2
グラフを描くときには点を細かく打っていきますが、
JAVAには点を打つ命令がありません。
もし(200,200)に点を打ちたいときは
drawLineを使って次のようにします。
drawLine(200,200,200,200)
ではプログラムです
public void paint(Graphics g)
{
double x,y;
int x1,y1;
for(x=-1;x<=1;x+=0.01)
{
y=x*x;
x1=(int)(250+250*x);
y1=(int)(250-250*y);
g.drawLine(x1,y1,x1,y1);
}
}
public void paint(Graphics g)
{
double x,y;
int x1,y1;
for(x=-1;x<=1;x+=0.01)
{
y=x*x;
x1=(int)(250+250*x);
y1=(int)(250-250*y);
g.drawLine(x1,y1,x1,y1);
}
}
実数の計算をするので
x,yをdoubleで定義します
public void paint(Graphics g)
{
double x,y;
整数型でx1,y1を定義します。
int x1,y1;
コンピュータの座標が整数のため
for(x=-1;x<=1;x+=0.01)
です。
{
y=x*x;
x1=(int)(250+250*x);
y1=(int)(250-250*y);
g.drawLine(x1,y1,x1,y1);
}
}
public void paint(Graphics g)
{
double x,y;
int x1,y1;
for(x=-1;x<=1;x+=0.01)
{
y=x*x;
x1=(int)(250+250*x);
y1=(int)(250-250*y);
g.drawLine(x1,y1,x1,y1);
}
}
xをー1から1まで、0.01ずつ
増やしながら繰り返します。
public void paint(Graphics g)
{
double x,y;
int x1,y1;
for(x=-1;x<=1;x+=0.01)
{
y=x*x;
x1=(int)(250+250*x);
y1=(int)(250-250*y);
g.drawLine(x1,y1,x1,y1);
}
}
今回描かせたい関数
public void paint(Graphics g)
{
double x,y;
int x1,y1;
for(x=-1;x<=1;x+=0.01)
{
y=x*x;
x1=(int)(250+250*x);
数学上の座標から
y1=(int)(250-250*y);
コンピュータの座標に変換します
g.drawLine(x1,y1,x1,y1);
}
}
コンピュータの座標のため
整数型になおします。
public void paint(Graphics g)
{
double x,y;
int x1,y1;
for(x=-1;x<=1;x+=0.01)
{
y=x*x;
x1=(int)(250+250*x);
y1=(int)(250-250*y);
g.drawLine(x1,y1,x1,y1);
}
}
(x1,y1)に点を打ちます
今日はここまでです
暇がある人は
いろいろな絵や
いろいろな関数を描いてみてください。