Java 自定义绘制AWT组件

Java 自定义绘制AWT组件,java,awt,paint,Java,Awt,Paint,我试图使用java.AWT.Graphics.drawLine()方法在AWT组件上绘制一系列线条,在其java.AWT.component.getGraphics()上对AWT组件进行渐变效果,但这永远不会保持绘制状态。是否有人知道如何将这些图形提交到组件,以便它们在调整大小和其他调用重新绘制的事件中保持不变?您需要覆盖组件的绘制方法。否则,如果只使用图形对象并向其写入一行,下次调用component paint方法时,它将重新绘制所有更改。是否仅限于AWT组件?如果没有,我建议您使用Swin

我试图使用
java.AWT.Graphics.drawLine()
方法在AWT组件上绘制一系列线条,在其
java.AWT.component.getGraphics()
上对AWT组件进行渐变效果,但这永远不会保持绘制状态。是否有人知道如何将这些图形提交到组件,以便它们在调整大小和其他调用重新绘制的事件中保持不变?

您需要覆盖组件的绘制方法。否则,如果只使用图形对象并向其写入一行,下次调用component paint方法时,它将重新绘制所有更改。

是否仅限于AWT组件?如果没有,我建议您使用Swing组件(以“J”开头的组件)。对于自定义绘制,您可以覆盖
paintComponent
方法,例如:

import java.awt.Graphics;

import javax.swing.JPanel;

public class CustomPaintingComponent extends JPanel
{
    @Override
    protected void paintComponent(Graphics g)
    {
        super.paintComponent(g);    // This will clear everything...

        // ... now you can apply your custom painting, for example:
        g.drawLine(10, 10, getWidth() - 10, getHeight() - 10);  // A line from upper left to lower right corner
    }
}

我怎样才能做到这一点?那么上述方法的意义是什么?