javaプログラミンのボタン処理に関するプログラ

Writer: admin Type: 観葉植物 Date: 2019-03-06 00:00
javaプログラミンのボタン処理に関するプログラムを作成しているのですが、中々うまくいかず困っています。ボタンを押す度に同じ楕円を横に描写しつづけ、楕円が横に5個描写されたら次の段落に移動して同じように5個楕円を描写されるようなプログラムを作成しています。import java.awt.*;import java.applet.*;import java.awt.event.*;public class Pro01Lec07lastChallenge2 extends Applet implements ActionListener{ int size = 30; Button enlargeButton; public void init(){ // (4) enlargeButton = new Button("増やす"); enlargeButton.addActionListener(this); add(enlargeButton); } public void paint(Graphics g){ g.drawOval(size,30,30,30); } public void actionPerformed(ActionEvent e){ size+=30; repaint(); }}これが僕の作ったプログラムなのですが、このプログラムだとボタンを押す度楕円が描写されるもののその前に描写した楕円が消えてしまいます。あと楕円を5回描写した後に段落を移行する設定もよくわかりません、、もしわかる方がいましたらアドバイスお願いします。###今時アプレットなんてモノは(ブラウザーでの実行が制限されるようになったため)絶滅危惧種レベルなのでJavaアプリケーションをオススメします。また(ハードルは高いでしょうが)Android Javaも考慮しても良いと思います。Androidアプリは、Android端末を持っていれば みんなに見せびらかせられるのでモチベーションが上がるんじゃないでしょうか。ただし、みんなが普段使ってるアプリと比べると圧倒的にショボイので あまり受けない可能性もありますが…。import java.applet.Applet;import java.awt.Button;import java.awt.Graphics;import java.awt.Image;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;public class Pro01Lec07lastChallenge2 extends Applet implements ActionListener{ // ダブルバッファリング Image ibuf; Graphics gbuf; int size = 30; int startX, startY; int stepX, stepY; int nextX, nextY; Button enlargeButton; public void init(){ // (4) startX = 1; startY = 1; stepX = startX; stepY = startY; enlargeButton = new Button("増やす"); enlargeButton.addActionListener(this); add(enlargeButton); ibuf = createImage(getSize().width , getSize().height); } public void paint(Graphics g){ gbuf = ibuf.getGraphics(); gbuf.drawOval(stepX*size,stepY*size,size,size); g.drawImage(ibuf, 0, 0,this); } public void actionPerformed(ActionEvent e){ stepX++; if(stepX>5){ stepX = startX; stepY++; } repaint(); }}ナイス0
###>// ダブルリング>Image ibuf;↑ダブルバッファリングとは、この場合Applet側のImageバッファとibufの2つと言う意味です。>Graphics gbuf;↑正確に言うと、このgbufはバッファではありません、絵を描くための「道具、動かし方」と考えてください。喩えて言うとImageは画用紙(イメージ・データの保存領域)、Graphicsは「筆、絵の具、筆の動かし方」と考えて下さい。
###この回答は投票によってベストアンサーに選ばれました!###suz********さん まずは、awtでのpaintメソッドについての理解が足りていないようです。とりあえず、そこの確認から始めてください。ナイス0

 

TAG