繁体   English   中英

如何在Java的JApplet中添加而不重绘工程图?

[英]How do I add and not repaint drawings in a JApplet in java?

如何在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;
   }
}

当我按上,下,左和右按钮时,如何添加另一个矩形?

绘制为BufferedImage并将其显示在JLabel 更新后,请调用label.repaint()以查看更改。 Do Doodle中所见。

将要绘制的东西存储在一个集合中(例如,两个矩形的坐标),调用repaint() ,并使paintComponent()方法遍历该集合,以逐个绘制和绘制它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM