1

図面を Japplet に追加し、新しい図面に置き換えるにはどうすればよいですか? repaint() を使用していますが、既存の四角形を置き換えるだけです。別の長方形を追加し、それを置き換えないための正しいコードは何でしょうか?

このコードがあるとします: ( このコードは私のものではありません )

import java.applet.Applet;
import java.awt.*;

public class MoveBox extends Applet
{
   private int x = 20, y = 20;
   private int width = 10, height = 10;
   private int inc = 5;
   private Color myColor = Color.red;

   private Button up = new Button("Up");
   private Button down = new Button("Down");
   private Button left = new Button("Left");
   private Button right = new Button("Right");
   private Button increase = new Button("[+]");
   private Button decrease = new Button("[-]");

   // init method
   public void init()
   {
      Panel buttons = new Panel();
      buttons.setLayout(new FlowLayout());
      buttons.add(up);
      buttons.add(down);
      buttons.add(left);
      buttons.add(right);
      buttons.add(increase);
      buttons.add(decrease);

      setLayout(new BorderLayout());
      add("South", buttons);
   }
   // public methods
   public boolean action(Event e, Object o)
   {
      if (e.target == up)
         return handleUp();
      else if (e.target == down)
         return handleDown();
      else if (e.target == left)
         return handleLeft();
      else if (e.target == right)
         return handleRight();
      else if (e.target == increase)
         return handleIncrease();
      else if (e.target == decrease)
         return handleDecrease();
      else
         return super.action(e, o);
   }
   public void paint(Graphics g)
   {
      g.setColor(myColor);
      g.fillRect(x,y,width,height);
   }
   // private methods
   private boolean handleUp()
   {
      y = y - inc;
      repaint();
      return true;
   }
   private boolean handleDown()
   {
      y = y + inc;
      repaint();
      return true;
   }
   private boolean handleRight()
   {
      if (x < size().width)
         x = x + inc;
      else
         x = 0;
      repaint();
      return true;
   }
   private boolean handleLeft()
   {
      if (x > 0)
         x = x - inc;
      else
         x = size().width;
      repaint();
      return true;
   }
   private boolean handleIncrease()
   {
      width += 5;
      height += 5;
      repaint();
      return true;
   }
   private boolean handleDecrease()
   {
      if (width > 5)
      {
         width -= 5;
         height -= 5;
      }
      repaint();
      return true;
   }
}

上下左右のボタンを押したときに別の長方形を追加するにはどうすればよいですか?

4

3 に答える 3

3

にペイントして、BufferedImageに表示しますJLabel。更新されたら、呼び出しlabel.repaint()て変更を確認します。Do Doodleに見られる EG 。

于 2012-12-16T09:51:19.817 に答える
1

ペイントしたいものをコレクションに格納し (たとえば、2 つの四角形の座標)、 を呼び出しrepaint()て、paintComponent()メソッドでペイントするもののコレクションを反復処理し、それらを 1 つずつペイントします。

于 2012-12-16T09:42:43.053 に答える
1
于 2012-12-16T09:43:31.447 に答える