Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.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 调用方法在JFrame上绘制_Java_Swing_Graphics2d - Fatal编程技术网

Java 调用方法在JFrame上绘制

Java 调用方法在JFrame上绘制,java,swing,graphics2d,Java,Swing,Graphics2d,有人能给我解释一下为什么这不起作用吗? 错误似乎在Gen类中,但 我想这可能和BoxMan有关。 错误表示找不到符号-变量g。 我还尝试输入int和double,但它给出了:Required(Java.awt.Graphics)Found(int)/(double)。那么,我们如何解决这个问题呢?我到处找都找不到答案。帮助初学者 import java.awt.*; import javax.swing.JFrame; import javax.swing.WindowConstants; im

有人能给我解释一下为什么这不起作用吗? 错误似乎在Gen类中,但 我想这可能和BoxMan有关。 错误表示找不到符号-变量g。 我还尝试输入int和double,但它给出了:Required(Java.awt.Graphics)Found(int)/(double)。那么,我们如何解决这个问题呢?我到处找都找不到答案。帮助初学者

import java.awt.*;
import javax.swing.JFrame;
import javax.swing.WindowConstants;
import java.lang.Object.*;

       public class JFrame_Test
{
        public static void main (String [] args)
    {
         Gen Gen= new Gen (1500,1000,"A Name"); // this gives parameters for a Jframe later.
    }
}


{
     Gen (int size1, int size2, String title)
     {
     JFrame aFrame = new JFrame (title);
     aFrame.setSize(size1,size2);
     aFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
     aFrame.setVisible(true);
     //aFrame.getContentPane().add(new Canvas());
     //Was trying to get it to work with a canvas
     BoxMan.paint (g); // the error pops up here.
    }
}

public class BoxMan

{
    public Graphics2D g2;
  public void paint(Graphics a ) 
  {
     g2 = (Graphics2D) g; // i even tried declaring "g" here.
     g2.drawRect (10, 10, 200, 200); 
  }
}

图形
对象未在任何位置声明。如果您想在
JPanel
上绘图,您应该创建一个扩展
JPanel
的类,然后添加
draw()
方法,该方法将获得一个“自动”的
图形
对象

最终,您可以创建自己的
图形
对象,但在该代码的任何地方都没有这样做。你的
BoxMen
课很乱。您必须决定是在
paint()
方法下使用
Graphics
对象参数,还是自己声明。我假设您尝试第二个,如果是这样,您应该将
g
更改为
a
(在
BoxMen
类中没有
g
变量)。您还可以去掉字段
g2
,改用局部变量


这个错误会弹出,因为Java不知道您所说的
g
是什么意思(它没有在任何地方声明)。这取决于你是想使用JPanel的
图形还是你自己的
图形。

与其重复Jantomedes已经说过的话(这很好),我将对其进行扩展

AWT和Swing中的喷漆通过喷漆子系统完成。该系统决定绘制什么以及何时绘制,并调用适当的方法来更新屏幕上的组件

有关更多详细信息,请参阅

Graphics
是Java中的一个抽象概念,用于将绘画概念标准化为各种可能的输出,包括屏幕、图像和打印机。除了图像,您不能创建自己的
图形
上下文,您需要系统提供它


查看详细信息

您能否发布如何在
Gen
类中初始化
g
?Swing程序应该重写
paintComponent()
,而不是重写
paint()
”。您在哪里找到这个使用画布和paint()方法的示例。我会忽略那个教程和网站。从上的Swing教程开始学习更好的绘画方法。谢谢你的建议。