我使用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)
}
答案 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)
}
}