private void draw_shape() {
Graphics g = getGraphics();
g.drawLine(0, 0, 100, 100);
repaint();
}
在 paint 方法中,只绘制那些图形,它们是 paint 方法的一部分,因此 我想在 paint 方法之外绘制形状。 这段代码画了线,但它立即消失了,我不明白为什么会这样。请帮忙
最佳答案
这不起作用,因为您在 Swing repaint thread 之外获取当前的 Graphics
.基本上:
- 你得到了当前的
Graphics
- 你在上面画点东西
- 然后你调用
repaint()
将调用组件的paint()
从而丢弃你所做的一切
要使其正常工作,您应该覆盖对象的paint
(paintComponent
for Swing)方法:
@Override
public void paint(Graphics g) {
super.paint(g); // if you have children to the component
g.drawLine(..)
}
然后在某些内容被修改时调用 repaint()
。
关于java - 在 paint 方法之外绘制图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20017783/