我试图在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);
}
}
答案 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'的变量