Java 2D图形矩形

Phe*_*ide 0 java resize canvas awt paint

我正在尝试创建一个允许我在画布中绘制图形数据结构的Java Applet.我将通过单击要创建节点的位置,然后单击节点来连接它们来完成此操作.问题是我无法让paint()方法正常运行.我在mousePressed(MouseEvent e)方法内部向图形(和画布上的方块)添加新节点,使用,

Graphics g = this.getGraphics();
g.setColor(Color.blue);
g.fillRect(e.getX(), e.gety(), 40, 40);
Run Code Online (Sandbox Code Playgroud)

一切正常,直到我调整窗口大小,然后所有填充的矩形消失.我把paint方法简化为一个空方法,但同样的事情仍然发生.我无法在paint()中添加fillRect命令,因为在用户使用鼠标与其交互之前我不知道存在哪些矩形.

如何g.fillRect()在鼠标监听器内部使用并使它们粘在一起?

kyl*_*ylc 6

我不知道我是否正确读取了这个,但为什么不在调用paint()方法时将最后一次单击的位置存储在稍后要绘制的变量中?


Gun*_*r47 6

问题是你要绘制的地方不是持久的.在任何时候,你都可能失去你所吸引的一切.发生这种情况时会调用paint(Graphics)方法.每次发生这种情况时,您都需要重新绘制整个图片,或者您需要预留一个画布来绘制并根据需要将内容复制到applet的图形中.

以下是创建和绘制图像的方法:
http://java.sun.com/docs/books/tutorial/2d/images/drawonimage.html

然后,在paint方法中,使用Graphics的drawImage(...)方法显示您创建的图像.