2015-10-24 2 views
1

Я использую NetBeans и последнюю версию JDK. По какой-то причине нет метода Graphics.draw(), хотя импортированы java.awt.geom.Line2D и java.awt.Graphics2D. Как нарисовать элемент Line2D.Double?Нет метода Graphics2D.draw в java?

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

Что делает getGraphics? Вы расширили класс? – arynaq

ответ

3

Ваша главная проблема заключается в том, что вы используете объект Graphics, как если бы это был объект Graphics2D, но это не так, и как Graphics class Java API entry покажет вам, класс Графика не имеет метод рисования, в то время как Graphics2D делает. Я думаю, что вы пропали без вести ключевой линии, что-то вроде:

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

Но, говорит, что вы используете графики неправильно, как вы должны избежать его, вызывая getGraphics() на компоненте свинга, так как это дает неустойчивое кратковременный графический объект, использование которого приводит к возникновению короткоживущих изображений или NullPointerExceptions, но вы должны сделать свой чертеж в методе paintComponent(Graphics g) JComponent.

0

Вы пропустили объявить переменную PLine в своем классе:

Ев.

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

О, извините, ** pLine ** заявлен как ** Shape ** вне функция. Изменение его на ** Line2D.Double ** ничего не меняет. – WhilseySoon

+0

См. Мой обновленный снимок, чтобы сделать его более понятным – Kitesurfer

+0

Я понимаю, что вы говорите, но объявление pLine как Line2D.Double не помогает. По какой-то причине я не могу получить доступ к методу Graphics.draw(). – WhilseySoon