首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java.awt.graphics中图形的自定义方法

java.awt.graphics中图形的自定义方法
EN

Stack Overflow用户
提问于 2016-06-04 11:17:25
回答 1查看 251关注 0票数 1

所以现在,我对使用java awt图形是个新手。我已经掌握了一些基础知识,比如如何实际将内容显示在屏幕上,但我的主要问题是,我正在尝试创建自定义方法,以便在类文件之外使用。

对于我的screen类:

代码语言:javascript
复制
    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);
        }
    }

对于我的绘图类,也使用screen类:

代码语言:javascript
复制
    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);
        }

    }

即使我有Graphics g;而没有声明它,我仍然得到相同的错误:

代码语言:javascript
复制
Exception in thread "main" java.lang.NullPointerException
at Screen.createBox(Screen:java:7)
at Draw.main(Draw:java:8)

createBox()应该在Screen类的外部使用,所以我仍然可以使用fillRect(),但使用不同的名称(我希望这是有意义的)。

谁能指出我做错了什么?谢谢。

EN

回答 1

Stack Overflow用户

发布于 2016-06-04 11:31:41

谁能指出我做错了什么?

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

所有这些内容都包含在tutorial on custom painting中。通过它!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37625986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档