Java 在main中调用方法时变量出现问题,

Java 在main中调用方法时变量出现问题,,java,Java,我试图调用这个方法主要是为了完成我的项目。但是我在变量方面有问题。它对我说:g不能被分解成一个变量……我怎么能解呢?我能做什么?请帮帮我…谢谢 import java.awt.*; public class Cycle { public void paintComponent(Graphics g) { int gjeresia_e_kornizes = 300; int gjatesia_e_kornizes = 200; g.setColor(Color.red); g.f

我试图调用这个方法主要是为了完成我的项目。但是我在变量方面有问题。它对我说:g不能被分解成一个变量……我怎么能解呢?我能做什么?请帮帮我…谢谢

import java.awt.*;


public class Cycle
{

 public void paintComponent(Graphics g)
 {
 int gjeresia_e_kornizes = 300;
 int gjatesia_e_kornizes = 200;
 g.setColor(Color.red);
 g.fillRect(0,0,gjeresia_e_kornizes, gjatesia_e_kornizes);
 g.setColor(Color.red);
 int skaji_majtas = 105;
 int lart =70;
 int gjeresia = 90;
 int lartesia = 60;
 g.drawRect(skaji_majtas, lart, gjeresia, lartesia);
 int diametri = 40;
 g.fillOval(skaji_majtas+gjeresia-diametri,lart, diametri, diametri);
 }

 public static void main (String[] args){
 // test your Cycle class hereafter

   Cycle cycle = new Cycle();

   //instanciate a Graphics g and pass it to the paintComponent method
   cycle.paintComponent(g);

 }

}
这是最基本的


在main方法中,您使用的是一个未定义的变量g。

您需要创建一个
Graphics
类对象(因为Graphics是一个抽象类,您可以传递它的任何子类对象,例如DebugGraphics、Graphics2D),您必须传递给该方法


如果您正在使用任何IDE,它必须向您提供编译时错误提示,因为您没有声明任何名为“g”的变量。

您自己没有实例化图形对象,它是为您管理的。这里是从
JPanel
扩展而来的代码的工作版本。看一看,然后从那里继续

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class Cycle extends JPanel {

    private static final long serialVersionUID = 1L;

    @Override
    public void paint(Graphics g) {
        int gjeresia_e_kornizes = 300;
        int gjatesia_e_kornizes = 200;
        g.setColor(Color.red);
        g.fillRect(0, 0, gjeresia_e_kornizes, gjatesia_e_kornizes);
        g.setColor(Color.red);
        int skaji_majtas = 105;
        int lart = 70;
        int gjeresia = 90;
        int lartesia = 60;
        g.drawRect(skaji_majtas, lart, gjeresia, lartesia);
        int diametri = 40;
        g.fillOval(skaji_majtas + gjeresia - diametri, lart, diametri, diametri);
    }

    @Override
    public Dimension getPreferredSize() {
        return new Dimension(300, 200);
    }

    public static void main(String[] args) {
        Cycle cycle = new Cycle();
        JFrame frame = new JFrame(Cycle.class.getSimpleName());
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(cycle);
        frame.pack();
        frame.setVisible(true);
    }

}

g不在主方法的范围内。注意,它既没有在main方法的范围内声明也没有定义。阅读本文直到您理解范围:您在哪里实例化了图形对象?它不在那里。你从不在main中分配“g”,它是未定义的。但是我如何实例化它呢?你能帮我吗?但我该如何定义它呢?您是否可以帮助meCheck查看您在Stackoverflow上发布的其他消息,在这些消息中,人们为您的问题提供了完整的解决方案。当前您正在重复您的问题,这不是一件好事。我如何才能创建此对象?你能帮帮我吗?维德:真的吗?我相信图形是一个抽象的类。@KodingKid同意,我本可以提到这一点的!我已经编辑了相同的,谢谢更正