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 对象并在组件重绘时将其传递给组件。
自定义绘画是通过覆盖 JPanel
的 paintComponent(...)
方法完成的。然后将面板添加到 JFrame`。
@Override
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
// add custom painting logic here
}
阅读 Custom Painting 上的 Swing 教程部分,了解更多信息和工作示例,以帮助您入门。这些教程将向您展示如何更好地构建您的 类.
(我是新来的,如果忘记写重要信息请见谅)。
我正在尝试从 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 对象并在组件重绘时将其传递给组件。
自定义绘画是通过覆盖 JPanel
的 paintComponent(...)
方法完成的。然后将面板添加到 JFrame`。
@Override
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
// add custom painting logic here
}
阅读 Custom Painting 上的 Swing 教程部分,了解更多信息和工作示例,以帮助您入门。这些教程将向您展示如何更好地构建您的 类.