简体   繁体   中英

No Graphics2D.draw method in java?

I use NetBeans and the last version of JDK. For some reason there is no Graphics.draw() method, though java.awt.geom.Line2D and java.awt.Graphics2D are imported. How do I draw a Line2D.Double element?

Shape pLine;
private void playerDraw(){
    Graphics g2 = getGraphics();
    pLine = new Line2D.Double(px, py, Math.cos(angle)*10+px,Math.sin(angle)*10+py);
    g2.drawRect(px-5, py-5, 10, 10);  
    g2.draw(pLine); //this doesn't compile(cannot find symbol)
}

Your main problem is that you're using a Graphics object as if it were a Graphics2D object, but it's not and as the Graphics class Java API entry will show you, the Graphics class does not have a draw method, while Graphics2D does. I think that you're missing a key line, something like:

Graphics g = getGraphics();
Graphics2D g2 = (Graphics2D) g; // the missing line

But having said that, you are using Graphics incorrectly as you should avoid getting it by calling getGraphics() on a Swing component since this gives you an unstable short-lived Graphics object whose use risks causing short-lived images or NullPointerExceptions, but rather you should do your drawing within the JComponent's paintComponent(Graphics g) method.

You missed to declare pLine variable in your Class:

Eg.

public class Example
{

public Line2D.Double pLine;

private void playerDraw(){
    Graphics g2 = getGraphics();
    pLine = new Line2D.Double(px, py,Math.cos(angle)*10+px,Math.sin(angle)*10+py);
    g2.drawRect(px-5, py-5, 10, 10);  
    g2.draw(pLine); //this doesn't compile(cannot find symbol)
}
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM