关于Graphics

黎某人 2009-08-06 02:21:39
在awt中窗体在启动的时候会调用
paint(Graphics g)方法来完成重绘
所以我一般都在这个方法里画点东西 图片或者一些基本图形之类

问题
我在其他地方可不可以绘制图形 意思就是 在窗体加载完毕之后随着 鼠标或者键盘事件 在窗体上绘制我需要的东西,

我试过用 Graphics g=this.getGraphics();获得Graphics的引用来绘制 结果这里的g是空的 程序运行将抛出NullPointerException异常

除了在窗体上添加Canvas画布 还有其他什么方法可以 随时随地的绘制图形吗
...全文
80 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
a1s2d3f4g5h6j7k8 2009-08-06
  • 打赏
  • 举报
回复
牛逼
黎某人 2009-08-06
  • 打赏
  • 举报
回复
已经解决了

this.setResizable(false);
this.addNotify();//加了这样一句话
Graphics g=this.getGraphics();
g.drawString("asdfasdf", 200, 60);

呵呵 谢谢啦
黎某人 2009-08-06
  • 打赏
  • 举报
回复
this.setResizable(false);
Graphics g=this.getGraphics();
g.drawString("asdfasdf", 200, 60);

我用这个画一个字符串 为什么在窗口打开的瞬间只能看到这个字符串闪一下就没了 怎么保留绘制的结果呢
黎某人 2009-08-06
  • 打赏
  • 举报
回复
照楼上所说 只要我先用 setVisible方法让其显示到屏幕也就是和图形设备进行绑定 这个
Graphics g=this.getGraphics();才有用是吧 我试试去 能用就结帖子了
lasfrost 2009-08-06
  • 打赏
  • 举报
回复
1,可以,绘制完之后需要repaint()重绘。

2,Graphics g图形上下文是图形组件绑定到具体的图形设备上才创建的,一般来说对JFrame使用setVisible(true)方法让其显示到屏幕也就是和图形设备进行了绑定,此时对组件使用getGraphics()才不会返回null。有种方法可以在组件可见之前让getGraphics()方法返回非null值,就是在此方法之前调用窗体的addNotify()方法。

3,Canvas其实也只是一个普通的Component,可以用任何一个Component的子类充当画布,Swing中的话最好用轻量级组件,比如JPanel之类。不想添加画布的话可以直接在窗体中绘制,事实上Applet小程序通常都是这么干的。

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧