java - 无法绘制到 Canvas : "cannot be applied to given types"

标签 java swing graphics jpanel draw

我使用了边框布局,并在中心放置了 Canvas ;主要游戏所在的位置,但我无法在其中绘制任何内容。

有人能给我指出正确的方向吗?

import java.awt.*;
import javax.swing.*;

public class TestingGraphics {

    public static void main (String[] args) {
          GameScene window = new GameScene();
    }
}
import java.awt.*;
import javax.swing.*;

public class GameScene extends JFrame {
       
    Canvas gameCanvas;
    Graphics Pencil;
    JPanel game;
   
    public GameScene() {
        game = new JPanel();
        add(game);

        setTitle("Yet to name this thing.");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);      
      
        gameCanvas = new Canvas();
        gameCanvas.setPreferredSize(new Dimension(1280, 720));
        game.add(gameCanvas);
     
        drawString();
      
        pack();
        setLocationRelativeTo(null);
        setVisible(true);
    }
   
    public void drawString(Graphics Pencil) {
         Pencil.drawString("boo", 100, 100);
    }
}   

最佳答案

您的问题是,您对如何在 Swing 中绘制进行了疯狂的猜测,但这永远不会起作用,您的错误包括尝试直接在 JFrame 中绘制、尝试调用方法而不传递必要的参数、在 JFrame 之外绘制任何绘画方法......首先,请访问 Swing 绘图教程,您可以在这里找到:Swing Drawing Tutorials ——然后阅读它们。

接下来,按照他们告诉你的去做:

  • 创建一个扩展 JPanel 的类
  • 在该类的paintComponent方法重写中绘制,而不是直接在JFrame中绘制
  • 请务必在重写的方法中调用父级的 PaintComponent 方法。
  • 将 JPanel 添加到顶级窗口(例如 JFrame)
  • 显示 GUI
  • 完成。

关于java - 无法绘制到 Canvas : "cannot be applied to given types",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36966834/

相关文章:

java - 是否可以将类表示为字段?

java - 获取 JButton 的默认边框

c++ - OpenGL 窗口显示背景窗口中的内容而不是空白窗口

java - java中如何写上标文本?

java - 帮助查找控制台常量

java - 构造函数中的 this.setMethod(parameter) 和 setMethod(parameter) 有什么区别? [ java ]

java - 用于在框架内的面板上显示不同半径的圆的代码

java - 线程在鼠标下的任何组件上写入状态更新文本

java - 与actionListener静态类冲突

c++ - 使用来自相机的初始数据创建 d3d11Texture2D