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()在鼠标监听器内部使用并使它们粘在一起?
问题是你要绘制的地方不是持久的.在任何时候,你都可能失去你所吸引的一切.发生这种情况时会调用paint(Graphics)方法.每次发生这种情况时,您都需要重新绘制整个图片,或者您需要预留一个画布来绘制并根据需要将内容复制到applet的图形中.
以下是创建和绘制图像的方法:
http://java.sun.com/docs/books/tutorial/2d/images/drawonimage.html
然后,在paint方法中,使用Graphics的drawImage(...)方法显示您创建的图像.