Java 调用方法在JFrame上绘制
有人能给我解释一下为什么这不起作用吗? 错误似乎在Gen类中,但 我想这可能和BoxMan有关。 错误表示找不到符号-变量g。 我还尝试输入int和double,但它给出了:Required(Java.awt.Graphics)Found(int)/(double)。那么,我们如何解决这个问题呢?我到处找都找不到答案。帮助初学者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
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教程开始学习更好的绘画方法。谢谢你的建议。