java - 在 paint 方法之外绘制图形

标签 java graphics awt

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/

相关文章:

html - 为什么我的 HTML5 矩形看起来放大了?

java - 在java中制作一个程序自动添加文本字段

java - API Jena - 我的界面的按钮 "Next"无法正常工作

java - 如何在JHipster中为FeignClient启用Autowired?

java - 使用 arraycopy 结果错误

java - 在 android Activity 中使用外部类

Android & 从位图中剪切(删除)形状

c# - 在 ASP.NET/C# 中使用 GDI+ 裁剪图像时抗锯齿?

java - 如何将具有 ComponentColorModel 的 BufferedImage 转换为 SWT ImageData?

java - 防止在多线程上下文中使用非线程安全方法