2013-03-06 3 views
0

Я искал какое-то время, а документация и Google вернули хороший ответ. Я только начал использовать java, так что помогите мне здесь. Я получаю сообщение об ошибке сКак использовать нестатические методы?

Graphics.drawString('hello',10, 10); 

Однако вся документация говорит мне, что я nedd использовать ул, Int, Int. Моя ошибка:

Cannot make a static reference to the non-static method drawString(str,int,int) from the type Graphics 

Так кто-нибудь знает, как это исправить?

+1

Перед пониманием приложений GUI вы должны понимать эти основные понятия. Учебники доступны для Oracle: [Общие сведения о экземплярах и членах класса] (http://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html) и [Общие методы] (http://docs.oracle. com/javase/tutorial/java/generics/methods.html) – shuangwhywhy

+0

Я настоятельно рекомендую вам прочитать хороший вводный учебник по Java, чтобы ознакомиться с основными понятиями (т. е. разницей между статическими и нестатическими). –

+0

Пожалуйста, разместите уменьшенный образец всего вашего класса. –

ответ

7

Необходимо использовать экземпляр Graphics, в точности как указано в сообщении об ошибке.

т.е.

Graphics graphics = new Graphics(); 
graphics.drawString("hello", 10, 10); 

В основном, static методы вызываются из класса, в то время как не статические методы должны быть вызваны с помощью фактического объекта этого класса.

Вам нужно будет получить экземпляр Graphics где-то, хотя, как Graphics constructor является protected, а не public, а сам класс abstract. (Для новичков все это означает, что вам нужно уже иметь объект, с которым можно работать, поскольку вы не можете создать его непосредственно для себя.)

Кроме того, примечание стороны: одинарная кавычка используется для char литералов, в то время как двойная кавычка используется для String литералов.

+0

спасибо jeff. что помогло – Groditz

+1

@ Groditz. Конечно. :) – asteri

+0

Groditz, не забудьте выбрать и ответить и выдать репутацию там, где это необходимо. – PsyKzz

2

drawString() метод не является статическим. Это означает, что вам нужен экземпляр объекта Graphics (или Graphics2D). Обычно, когда вы используете этот объект, он передается вам как параметр в метод paint().

Смежные вопросы