使用 Canvas 在 Java 中绘图

2022-09-03 03:40:11

我想在Java的Canvas中绘制,但无法让它工作,因为我不知道我在做什么。这是我的简单代码:

import javax.swing.JFrame;
import java.awt.Canvas;
import java.awt.Graphics;
import java.awt.Color;

public class Program
{
    public static void main(String[] args)
    {
        JFrame frmMain = new JFrame();
        frmMain.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frmMain.setSize(400, 400);

        Canvas cnvs = new Canvas();
        cnvs.setSize(400, 400);

        frmMain.add(cnvs);
        frmMain.setVisible(true);

        Graphics g = cnvs.getGraphics();
        g.setColor(new Color(255, 0, 0));
        g.drawString("Hello", 200, 200);
    }
}

窗口中不显示任何内容。

我是否错误地认为Canvas是一张纸,而图形是我的铅笔?是这样运作的吗?


答案 1

建议:

  • 不要使用 Canvas,因为您不应该不必要地将 AWT 与 Swing 组件混合。
  • 而是使用JPanel或JComponent。
  • 不要通过调用组件来获取图形对象,因为获取的图形对象将是暂时的。getGraphics()
  • 绘制 JPanel 的方法。paintComponent()
  • 所有这些在几个很容易找到的教程中得到了很好的解释。为什么不先阅读它们,然后再尝试猜测这些东西呢?

关键教程链接:


答案 2

您必须覆盖 Canvas 的方法并在那里执行绘图。请参阅 paint() 文档。paint(Graphics g)

如前所述,默认操作是清除画布,因此对画布图形对象的调用不会按预期执行。


推荐