グラフィックの描画 (5/6)
作成:2010-01-14 16:39
更新:2010-01-14 16:39
更新:2010-01-14 16:39
■クリックして描く!
このpaintメソッドというのは、あらかじめ用意したメソッドを実行して表示させるというものです。ということは、ユーザーが何か操作してそれに応じてその場で何か描く、というようなことには向かないことになります。こういう「ユーザーの操作と連係した描画」はどうすればいいのでしょう?
要するに、この部品のGraphicsインスタンスが取りだせれば描画は行えるわけです。そしてユーザーが操作した時のイベント処理は、前回に勉強しました。ということは、これらを組み合わせれば、「クリックして描かせる」ということができそうじゃないですか。
下リストがそのサンプルです。マウスでクリックすると、ランダムな色で円を描いていきます。今回はCanavs自身に描画機能を持たせるのではなく、イベントリスナーの中から描画を行なうことになります。ということで、Test9全体を書き換える感じになりました。
要するに、この部品のGraphicsインスタンスが取りだせれば描画は行えるわけです。そしてユーザーが操作した時のイベント処理は、前回に勉強しました。ということは、これらを組み合わせれば、「クリックして描かせる」ということができそうじゃないですか。
下リストがそのサンプルです。マウスでクリックすると、ランダムな色で円を描いていきます。今回はCanavs自身に描画機能を持たせるのではなく、イベントリスナーの中から描画を行なうことになります。ということで、Test9全体を書き換える感じになりました。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
import java.awt.*; import java.awt.event.*; public class Test9 extends Frame { Canvas mc; public Test9() { super(); setTitle("Hello"); setSize(300,250); setLayout(null); mc = new Canvas(); mc.setBounds(25,25,250,200); this.add(mc); mc.addMouseListener(new Clicked()); } public static void main (String args []) { new Test9().show(); } class Clicked extends MouseAdapter { public void mouseClicked(MouseEvent ev){ Graphics gr = mc.getGraphics(); int x = ev.getX(); int y = ev.getY(); int r = (int)(Math.random() * 255); int g = (int)(Math.random() * 255); int b = (int)(Math.random() * 255); gr.setColor(new Color(r,g,b)); gr.fillOval(x - 10,y - 10,20,20); gr.dispose(); } } }
※関連コンテンツ