没有Graphics2D.java中的绘制方法



我使用NetBeans和最新版本的JDK。由于某种原因,没有Graphics.draw()方法,虽然java.awt.geom.Line2Djava.awt.Graphics2D是导入的。我怎么画一个Line2D.Double元素?

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)
}

您的主要问题是,您正在使用图形对象,就好像它是一个Graphics2D对象,但它不是,并且正如图形类Java API条目将向您展示的那样,图形类没有绘制方法,而Graphics2D有。我想你漏掉了一个关键行,比如:

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

但是已经说过,你使用图形不正确,因为你应该避免通过调用getGraphics()在Swing组件上获得它,因为这会给你一个不稳定的短寿命图形对象,其使用风险导致短寿命图像或nullpointerexception,而是你应该在JComponent的paintComponent(Graphics g)方法内进行绘图。

您错过了在class中声明line变量:

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)
}
}

最新更新