-1

有人可以向我解释为什么这不起作用吗?该错误似乎在 Gen 类中,但我认为这可能与 BoxMan 有关。错误说找不到符号变量 g。我也尝试输入整数和双精度数,但它给了我:必需(Java.awt.Graphics)找到(整数)/(双精度)。那么如何解决这个问题呢?我到处找,找不到答案。帮助初学者!

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); 
  }
}
4

2 回答 2

2

与其重复扬托梅德斯已经说过的话(这一切都很好),我将对其进行扩展......

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

有关详细信息,请参阅AWT 和 Swing 中的绘画

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

查看在 Swing 中执行自定义绘画以获取详细信息

于 2013-10-20T19:47:54.720 回答
1

Graphics对象未在任何地方声明。如果你想利用你的,JPanel你应该创建一个扩展类,JPanel并在那里添加draw()方法,它将获得一个“自动化”Graphics对象。

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

弹出错误是因为 Java 不知道您的意思g(它没有在任何地方声明)。JPanel如果您想使用'sGraphics或您自己的,这取决于您。

于 2013-10-20T16:03:57.180 回答