Java 在main中调用方法时变量出现问题,
我试图调用这个方法主要是为了完成我的项目。但是我在变量方面有问题。它对我说:g不能被分解成一个变量……我怎么能解呢?我能做什么?请帮帮我…谢谢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
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同意,我本可以提到这一点的!我已经编辑了相同的,谢谢更正