AWT-EventQueue-0 NullPointerException из-за инициализации графика. - PullRequest
0 голосов
/ 19 ноября 2018

(Я новичок здесь, извините, если я забыл написать любую важную информацию). Я пытаюсь визуализировать погоду с помощью AccuWeather API, и в настоящее время я застрял с инициализацией Graphics g, я думаю.

Итак, это моя инициализация:

public class Draw extends JFrame {

    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    Graphics g;

Я пытался Graphics g = new Graphics();, но это не работает, потому что Graphics g статично.

это часть моего метода рисования:

public void paint (Double[] weather, String sender, Graphics g) {

        super.paint(g);
        Toolkit tk = Toolkit.getDefaultToolkit();

        if (sender.equals("index5_Button")) {

            Graphics2D stargazing = (Graphics2D) g;
            ((Graphics2D) g).setBackground(Color.BLACK);

Вот как выглядит призыв к краске:

paint(weatherValue, sender, g);

Так что очевидно, что он не инициализирует g правильно, но я не знаю, как это исправить.

Большое спасибо за возможную помощь заранее!

1 Ответ

0 голосов
/ 19 ноября 2018

Я попробовал Graphics g = new Graphics ();

Вы не должны пытаться инициализировать объект Graphics компонента. Swing создаст объект Graphics и передаст его компоненту при перекрашивании компонента.

Пользовательская роспись выполняется путем переопределения paintComponent(...) метода JPanel. Затем вы добавляете панель в JFrame`.

@Override
protected void paintComponent(Graphics g)
{
    super.paintComponent(g);

    // add custom painting logic here
}

Прочтите раздел из учебника по Swing по Custom Painting для получения дополнительной информации и рабочих примеров, с чего можно начать. Обучающие программы покажут вам, как лучше структурировать ваши классы.

...