Нарисовать точку JAVA

291
20 февраля 2018, 06:24

Пытаюсь нарисовать точки там где "кликаю" мышью, но получаю ошибку

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException

Тут осуществляется рисование:

public void paintComponent() {
    super.paintComponent(this.g2);
    g2.drawOval(5, 5, getPosX(), getPosY());
}

Вот весь класс где я беру координаты и рисую:

public class Poss extends JPanel{
private int posX = 0;
private int posY = 0;
private Graphics2D g2;
public void paintComponent() {
    super.paintComponent(g2);
    g2.drawOval(5, 5, getPosX(), getPosY());
}
public void jPanel2MouseReleased(MouseEvent evt) {
    setPosX(evt.getX());
    setPosY(evt.getY());
    System.out.println(getPosX() + " " + getPosY());
    paintComponent();
}
public void jPanel2MouseDragged(MouseEvent evt) {
    setPosX(evt.getX());
    setPosY(evt.getY());
    System.out.println(getPosX() + " " + getPosY());
    paintComponent();
}
public int getPosX(){
    return posX;
}
public int setPosX(int posX) {
    return this.posX = posX;
}
public int getPosY() {
    return posY;
}
public int setPosY(int posY) {
    return this.posY = posY;
}
public Graphics2D setG2(Graphics2D g){
    return this.g2 = g;
}}

Вот класс в котором я создаю форму:

public class PaintEL extends Thread{
Poss poss = new Poss();
JFrame frame = new JFrame("Paint");
JPanel panel = new JPanel();
Graphics g = panel.getGraphics();
Graphics2D g2 = (Graphics2D) g;
public PaintEL(){
    run();
}
public void run(){
    formComp();
}
private void formComp(){
    frame.setSize(350, 350);
    frame.add(panel);
    addAcrionForm();
    frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    frame.setVisible(true);
}
private void addAcrionForm(){
    poss.setG2(g2);
    panel.addMouseListener(new MouseAdapter() {
        public void mouseReleased(MouseEvent evt) {
            poss.jPanel2MouseReleased(evt);
        }
    });
    panel.addMouseMotionListener(new MouseMotionAdapter() {
        public void mouseDragged(MouseEvent evt) {
            poss.jPanel2MouseDragged(evt);
        }
    });
}}

Поскольку Графика инициализирована в классе где рисую форму, тогда я передаю графику в класс где рисую, происходит это так:

private void addAcrionForm(){
poss.setG2(g2);

Ошибка в строке:

super.paintComponent(g2);

если удалить эту строку, тогда ошибка будет тут:

g2.drawOval(5, 5, getPosX(), getPosY());
READ ALSO
Где документация по java ee 8?

Где документация по java ee 8?

Добрый деньВот изучаю JAVA_EE но проблема в том что не могу скачать документацию с примерами для ee 8

308
Авторизация Java Android

Авторизация Java Android

Всем добрый день! Только начал изучать Java Android и пытаюсь разобраться как идет взаимодействие с базой данных и авторизацией в приложении

161
Распространение программы на Java

Распространение программы на Java

Здравствуйте дамы и господа! Для нашего университета был разработан комплекс программ для проведения тестирования студентов используя...

219
Заполнение таблицы в Apache POI

Заполнение таблицы в Apache POI

Начинаю изучать ApachePOIСтолкнулась с проблемой заполнения таблицы

262