import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;public class TestPaint { public static void main(String[] args) {
new PaintFrame().init();
}}class PaintFrame extends Frame {
Graphics grah = null; void init() {
this.setBounds(20, 20, 400, 400);
setVisible(true);
grah = this.getGraphics();
grah.setColor(Color.BLUE);
grah.drawLine(30, 30, 100, 100);
                 grah.drawString("Hello", 100, 100);
}}
请问:为什么无法画出该直线,而下方字体却好像能够显示,什么原因?初学Graphics类,这块有点不明,谢谢各位!

解决方案 »

  1.   

    不能在自定义的init()方法中绘制,因为它只执行一次,窗口会因大小改变而重绘。应该在public void paint(Graphics g){}中绘制
      

  2.   

    画图一般都不是在JFrame上的操作
    你创建个继承于JPanel的类,重写他的paintComponent()《在这个方法中画图》
    注意在画图之前调用子类的paintComponent方法
    然后在JFrame中创建个你刚写的那个类
      

  3.   

    原因好象是窗口在第一次初始顯示時候也會調用paint 方法﹐將之前的畫面重畫了,即被擦掉.謝謝各位
      

  4.   

    init 算是初始化函数吧.后面加直线可以用add