在java中没有Graphics2D.draw方法?

时间:2015-10-24 10:50:40

标签: java swing netbeans draw java-2d

我使用NetBeans和JDK的最新版本。出于某种原因,虽然导入了Graphics.draw()java.awt.geom.Line2D,但没有java.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)
}

2 个答案:

答案 0 :(得分:3)

你的主要问题是你正在使用Graphics对象就好像它是一个Graphics2D对象,但它不是,而Graphics class Java API entry会告诉你,Graphics类没有draw方法,而{ {3}}。我认为你错过了一个关键线,如:

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

但是说了之后,你正在使用不正确的图形,因为你应该通过在Swing组件上调用getGraphics()来避免它,因为这会给你一个不稳定的短期图形对象,其使用风险会导致短暂的图像或NullPointerExceptions,而是你应该在JComponent的paintComponent(Graphics g)方法中进行绘制。

答案 1 :(得分:0)

您错过了在类中声明pLine变量:

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