用一个方法就要了解一个方法的特性,何况你遇到错误了还不仔细研究一下那个方法 下面是Javadoc关于这个方法的介绍 Creates a graphics context for this component. This method will return null if this component is currently not displayable. 写得很清楚了,当component当前没有显示的时候,会返回null 所以你要先setVisible 还有一个问题,如果你只是drawLine画一次,那你是看不到效果的,因为窗体是不断重绘的,也就是内容是不断清空的,如果要看到效果,你就要不断的drawLine,像下面这样,但这样的做法是不好的,正确的应该是重写paint方法。 Frame f = new Frame(); f.setSize(400, 300); f.setVisible(true);
下面是Javadoc关于这个方法的介绍
Creates a graphics context for this component. This method will return null if this component is currently not displayable.
写得很清楚了,当component当前没有显示的时候,会返回null
所以你要先setVisible
还有一个问题,如果你只是drawLine画一次,那你是看不到效果的,因为窗体是不断重绘的,也就是内容是不断清空的,如果要看到效果,你就要不断的drawLine,像下面这样,但这样的做法是不好的,正确的应该是重写paint方法。
Frame f = new Frame();
f.setSize(400, 300);
f.setVisible(true);
Graphics g = f.getGraphics();
while (true) {
g.drawLine(1, 1, 100, 100);
}
不过为什么重写paint()方法就能解决窗体重绘问题了呢。是重写paint方法就不重绘了吗?
重绘是怎么回事呀。
我是新手,请多多包涵。
为组件创建一个图形上下文。如果组件当前是不可显示的,则此方法返回 null。 返回:
组件的图形上下文,如果其没有,则返回 null
从以下版本开始:
JDK1.0
另请参见:
paint(java.awt.Graphics)
重绘指的是repaint,不论你重不重写paint方法,都会重绘的。
重写paint的方法,就相当于,你告诉画家,不要画你原来想画的东西,我来告诉你画什么,怎么画。
而你那样先getGraphics的方法,就相当于,你先把画板抢过来,上面有画家的画,而你自己再修改,所以要保证你的修改用户能看到,你只能和画家一样的速度或者比他更快,不然你画上去,1/60秒后就被画家擦掉了,但这依然是一种不好的做法