如何添加绘图ii 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;
}
}
当我按下按钮时,如何向上,向下,向左和向右添加另一个矩形?
答案 0 :(得分:3)
绘制到BufferedImage
并将其显示在JLabel
中。更新后,请致电label.repaint()
查看更改。例如。如Do Doodle中所示。
答案 1 :(得分:1)
将要绘制的内容存储在集合中(例如,两个矩形的坐标),调用repaint()
,然后让paintComponent()
方法遍历要绘制的内容集合逐一涂漆。
答案 2 :(得分:1)
将JPanel放在那里,然后查看lesson 2D Graphics
更容易从普通JFrame