Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在画布上绘制而不扩展它?_Java_Canvas_Frame - Fatal编程技术网

Java 在画布上绘制而不扩展它?

Java 在画布上绘制而不扩展它?,java,canvas,frame,Java,Canvas,Frame,为了在JFrame中绘制图像和/或形状,我使用了一种非常常用的方法 我使用一个扩展canvss的类,创建自己的自定义JFrame对象,然后添加自己的类(扩展camvas)。然后,我重写“paint”方法以便在画布上绘制 基本上,以下是一个示例: 整个过程都很完美,但我想知道是否有一种方法可以在jframe(最好是画布)上绘制,而不必扩展canvas类 谢谢 Jake尝试使用JPanel并覆盖用于自定义绘制的paintComponent()方法 不要忘记在重写方法中调用super.paintCo

为了在JFrame中绘制图像和/或形状,我使用了一种非常常用的方法

我使用一个扩展canvss的类,创建自己的自定义JFrame对象,然后添加自己的类(扩展camvas)。然后,我重写“paint”方法以便在画布上绘制

基本上,以下是一个示例:

整个过程都很完美,但我想知道是否有一种方法可以在jframe(最好是画布)上绘制,而不必扩展canvas类

谢谢


Jake

尝试使用
JPanel
并覆盖用于自定义绘制的
paintComponent()
方法

  • 不要忘记在重写方法中调用
    super.paintComponent(g)

  • 不要直接在
    JFrame
    本身上绘制,而是在
    JPanel
    上绘制,然后将其添加到
    JFrame

示例代码:

JPanel panel = new JPanel() {
    @Override
    public void paintComponent(Graphics g) {
      super.paintComponent(g);

      //your custom drawing here
    }
};

切勿直接在
JFrame
本身上绘制。取而代之的是在
JPanel
上画图,然后将其添加到
JFrame
中,你能给我举个例子吗?我是否需要扩展一个类(以及重写和方法)?不,不是真的-或者更深入,不是一个能够很好地与Swing的被动渲染模型一起工作的类