Так что прямо сейчас, я новичок в использовании графики java awt. У меня есть основы, как, например, как на самом деле помещать вещи на экран, но моя основная проблема заключается в том, что я пытаюсь создать собственные методы для использования за пределами файла класса.Пользовательские методы для графики в java.awt.graphics
Для моего класса экрана:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Screen extends JPanel{
Graphics g = null;
public void createBox(int x, int y, int width, int height){
g.fillRect(x, y, width, height);
}
}
Для моего класса Draw, используя класс экрана, а также:
import javax.swing.*;
public class Draw{
public static void main(String[] args) {
JFrame f = new JFrame("Shapes");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Screen s = new Screen();
s.createBox(10,10,10,10);
f.add(s);
f.setSize(512, 512);
f.setVisible(true);
}
}
Даже когда у меня есть графики г; без него объявляется, я все еще получаю такое же существо ошибки:
Exception in thread "main" java.lang.NullPointerException
at Screen.createBox(Screen:java:7)
at Draw.main(Draw:java:8)
createBox() предполагается использовать вне класса Screen, так что я по-прежнему можно использовать FillRect(), но с другим именем (я надеюсь, что это имеет смысл).
Может ли кто-нибудь указать, что я делаю неправильно? Благодарю.
Дело в том, что я не хочу использовать paintComponent. Я хочу сделать это, если бы я набрал createBox в другом классе, я мог бы создать прямоугольник на экране. –
Дело в том, что мне все равно, чего вы хотите. Это правильный способ сделать обычную роспись. OTOH вы можете использовать «BufferedImage» в качестве поверхности рисования. –
Тогда вы не ответили на мой вопрос. Я имею в виду, что я неправильно сделал неправильный способ рисования. Я пытался поместить коробку на экран по-другому. –