有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java中图形的swing自定义方法。awt。图样

所以现在,我还不熟悉使用JavaAWT图形。我已经了解了一些基本知识,比如如何在屏幕上显示内容,但我的主要问题是,我正在尝试创建自定义方法,以便在类文件之外使用

对于我的屏幕类:

    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类,也使用screen类:

    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);
        }

    }

即使我有图形g;如果没有声明,我仍然会得到相同的错误:

Exception in thread "main" java.lang.NullPointerException
at Screen.createBox(Screen:java:7)
at Draw.main(Draw:java:8)

createBox()应该在Screen类之外使用,因此我仍然可以使用fillRect(),但名称不同(我希望这有意义)

有人能指出我做错了什么吗?谢谢


共 (1) 个答案

  1. # 1 楼答案

    Can anyone point out what I'm doing wrong?

    不要试图保留对Graphics对象的引用!而是重写paintComponent(Graphics)方法并使用该(有效,而不是null)图形实例。要触发绘制,请调用repaint()

    所有这些内容都在tutorial on custom painting中介绍。经历一下