【发布时间】:2014-12-12 13:02:21
【问题描述】:
我有一个 JPanel,我在其中使用鼠标事件进行绘制,在调整大小或最小化恢复它之后,它不显示必须绘制的内容,尽管显示了“degub”println我正在调用该函数,但由于某种原因,它仍然为空白
我认为我应该在 paintComponent 函数中添加我的绘图函数,但它似乎不能正常工作,所以我做错了什么或者我应该将 drawElements() 调用放在哪里?
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
drawElements();
}
void drawElements() {
Graphics2D g = (Graphics2D)this.getGraphics();
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
for (Element el : elements) {
el.draw(g);
}
}
【问题讨论】:
-
请发布一个可运行的示例
-
另外,我不知道 drawElements() 是如何工作的,因为您没有将 Graphics 对象传递给该方法。
-
它与绘图过程无关,因为在鼠标单击时它会绘制单个元素并且它工作得很好。如果我替换绘图一个元素来绘制它们,它也可以工作。所以这与我不理解的内部工作方式有关
-
将图形对象传递给drawElements方法
-
确实,@rafalopez79 的建议是正确的答案。我用一个简单的例子重现了你的确切问题,并传递了图形对象而不是调用 getGraphics() 来修复它。
标签: java swing canvas jpanel paintcomponent