在main中调用方法时变量的问题,

时间:2013-12-05 19:15:40

标签: java

我试图在main中调用此方法以便执行我的项目。但是我遇到变量问题。它告诉我: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);

 }

}

3 个答案:

答案 0 :(得分:1)

这是基础。

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

答案 1 :(得分:1)

您不自行实例化图形对象,它是为您管理的。这是代码的工作版本,从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);
    }

}

答案 2 :(得分:0)

你需要创建一个Graphics类对象(因为Graphics是一个抽象类,你可以传递它的任何子类'对象,例如DebugGraphics,Graphics2D),你将不得不传递给该方法。

如果您使用任何IDE,它必须给出编译时错误玩具,因为您没有声明任何名为'g'的变量