有人可以向我解释为什么这不起作用? 错误似乎在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);
}
}
答案 0 :(得分:2)
而不是重复Jantomedes已经说过的话(这一切都很棒),我将继续扩展...
AWT和Swing中的绘画是通过paint子系统完成的。该系统决定绘制的内容和时间,并调用适当的方法来更新屏幕上的组件。
有关详细信息,请参阅Painting in AWT and Swing
Graphics
是Java中的一个抽象概念,用于将绘画概念标准化为各种可能的输出,包括屏幕,图像和打印机。除了图像,您无法创建自己的Graphics
上下文,需要它由系统提供
答案 1 :(得分:1)
Graphics
对象未在任何地方声明。如果您想在JPanel
上绘图,则应该创建一个扩展JPanel
的类,并添加draw()
方法,该方法将获得“自动”Graphics
对象。
最终,您可以创建自己的Graphics
对象,但在该代码中的任何位置都没有这样做。你的BoxMen
课很乱。您必须决定是否在Graphics
方法下使用paint()
对象参数或自行声明。我假设您尝试了第二个,如果是这样,您应该将g
更改为a
(g
类中的任何位置都没有BoxMen
变量。您也可以删除字段g2
并使用局部变量。
弹出错误,因为Java不知道g
的含义(它没有在任何地方声明)。如果您想使用JPanel
的{{1}}或您自己的Graphics
,这取决于您。