AWT-EventQueue-0 NullPointerException 因为图形 g 初始化

AWT-EventQueue-0 NullPointerException because of Graphics g initilisation

(我是新来的,如果忘记写重要信息请见谅)。 我正在尝试从 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,但我不知道如何修复它。

非常感谢您提前提供可能的帮助!

I tried Graphics g = new Graphics();

您不应尝试初始化组件的 Graphics 对象。 Swing 将创建 Graphics 对象并在组件重绘时将其传递给组件。

自定义绘画是通过覆盖 JPanelpaintComponent(...) 方法完成的。然后将面板添加到 JFrame`。

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

    // add custom painting logic here
}

阅读 Custom Painting 上的 Swing 教程部分,了解更多信息和工作示例,以帮助您入门。这些教程将向您展示如何更好地构建您的 类.