//Colorart.java // by Totora(2000/1/30) import java.awt.*; import java.applet.*; import java.awt.event.*; public class Colorart extends Applet implements MouseListener //マウスイベントを処理するためにMouseListenerをインプリメントする { int ck, sk; //マウスの状態をチェックするための変数 public void init() { ck = 0; sk = 0; setBackground(Color.pink); //これは背景色の指定(ピンク) addMouseListener(this); //マウスの操作に応じた処理をするための //リスナーを登録 } public void paint(Graphics g) { g.setColor(Color.blue); //これが、描画色の指定(青) g.drawLine(30,50,300,50); g.drawLine(30,55,300,55); //線を太くしてみましょう(3倍) g.drawLine(30,56,300,56); //Swingではこんなことしなくても大丈夫 g.drawLine(30,57,300,57); g.setColor(Color.green); //描画色を緑に g.drawRect(50,65,30,30); g.setColor(Color.yellow); //描画色を黄色に g.fillRect(100,65,30,30); //四角形の内部を塗りつぶします //fillRect(基準点x座標, y座標, 幅, 高さ); drawRectと同じ g.setColor(Color.blue); //描画色を青に g.drawRect(150,65,30,30); g.setColor(Color.orange); //描画色をオレンジに g.fillRect(200,65,30,30); g.setColor(Color.magenta);//描画色をマゼンタに g.fillRect(250,65,30,30); g.setColor(Color.white); g.setFont(new Font("Helvetica", Font.BOLD, 32)); g.drawString("Color Art", 95,45); //ここからは、ボタンがクリックされたときの処理 if(ck == 0 && sk == 0) //初期状態 { g.setColor(Color.green); g.fill3DRect(130,115,80,30,true); //fill3DRectは、四角形に立体感を与えます //4つ目までの引数は、fillRectと同じ。5つ目のtrueは凸形態の指定 g.setColor(Color.orange); g.setFont(new Font("Dialog", Font.BOLD,12)); g.drawString("PUSH ME!", 140,135); //文字の描画も、グラフィックとして処理できる //drawString("文字列", 基準点x座標 , 座標y); //基準点は、文字列の左下隅 --- 注意! }else if(ck == 1 && sk == 0) //ボタン上でマウスが押された時 { g.setColor(Color.green); g.fill3DRect(130,115,80,30,false); //引数falseで凹形態を指定 g.setColor(Color.gray); g.setFont(new Font("Dialog", Font.BOLD,12)); g.drawString("PUSH ME!", 140,135); }else if(ck == 0 && sk == 1) //ボタン上でマウスが押された後はなされた時 { g.setColor(Color.green); g.fill3DRect(130,115,80,30,true); //ボタンを凸状態にもどす g.setColor(Color.orange); g.setFont(new Font("Dialog", Font.BOLD,12)); g.drawString("PUSH ME!", 140,135); //色とサイズを変えて、楕円を描画 //fillOvalは、図形内部を塗りつぶす。引数の指定は、drawOvalと同じ g.setColor(Color.green); g.fillOval(50,170,250,120); g.setColor(Color.orange); g.fillOval(80,190,190,80); g.setColor(Color.blue); g.fillOval(110,210,130,40); g.setColor(Color.magenta); g.fillOval(140,220,70,20); //文字列の色を変えて少しずらして描画することで,立体感を出す g.setColor(Color.white); g.setFont(new Font("Helvetica",Font.BOLD,38)); g.drawString("GRAPHICS",70,224); g.setColor(Color.gray); g.drawString("GRAPHICS",73,225); } } public void update(Graphics g) //画面のちらつきを抑えるために使われる { //今回は、必ずしも必要ない paint(g); } public void mousePressed(MouseEvent e) //マウスが押された時の処理 { int cx,cy; cx = e.getX(); //マウスが押された位置のx座標を取得しcxに入れる cy = e.getY(); //マウスが押された位置のy座標を取得しcyに入れる if(cx >= 130 && cx <= 210 && cy >= 115 && cy <= 145) //マウスが押された位置が、ボタンの領域内だったら { ck = 1; //チェック用変数ckに1を入れる(初期値は0) repaint(130,115,80,30); //描画し直す } } public void mouseReleased(MouseEvent e) { int cx,cy; cx = e.getX();//マウスがはなされた位置のx座標を取得しcxに入れる cy = e.getY(); //マウスがはなされた位置のy座標を取得しcyに入れる if(cx >= 130 && cx <= 210 && cy >= 115 && cy <= 145) //マウスがはなされた位置が、ボタンの領域内だったら { ck = 0; //変数ckの値は0に戻す sk = 1; //変数skの値を1に変更(初期値は0) repaint(); //描画し直し } } //以下の3つのメソッドは、なにもしない //MouseListenerをインプリメントしているので、使用しないメソッドも //このように定義し直さなくてはならない。 public void mouseClicked(MouseEvent e){} public void mouseEntered(MouseEvent e){} public void mouseExited(MouseEvent e){} } /*********** プログラムは以上 ************************************ * MouseAdapterというクラスを利用すると、最後の空のメソッドを書く *必要がなくなるのだけれど、事情があって使用していない。 */