程序中的一个小功能测试没结果,很郁闷,就是在画图之后 在  G.drawLine(90,90,500,500);  这里之后,在图形界面的窗口上没有出现我所期待的直线,这是为何呢?
希望有能解决的朋友帮忙.谢谢~~~
import java.awt.*;
import javax.swing.*;
import java.io.*;
import java.awt.event.*;public class draw extends JFrame implements ActionListener
{ draw(String title)
{
//图形界面的初始化
super(title);

JMenuItem item=new  JMenuItem("程序简介");
item.addActionListener(this);

JMenu Menu=new JMenu("关于");
Menu.add(item);
JMenuBar bar=new JMenuBar();
bar.add(Menu);
setJMenuBar(bar);


setSize(1400,800);
setVisible(true);
setLayout(new BorderLayout());
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);

//界面设置结束


//进入图形绘画

Graphics G=this.getGraphics();
G.setColor(Color.PINK); G.drawLine(90,90,500,500);
validate();

}

public void actionPerformed(ActionEvent e) //事件处理
{
//目前先不作处理
}

public static void main(String []args)
{
new draw("画图板");
}
}

解决方案 »

  1.   

    你在调用getGraphics()时,窗口环境还未建立,这时取得的Graphics是null的。   
      你可以在paint()等函数中进行绘画。   
      public   void   paint(Graphics   g)   
      {   
      super.paint(g);   
      //   your   code   
      }
      

  2.   

    我这样的修改了一下我的代码.既然说是没有窗口环境,我就在窗口被建立了之后再调用方法进行绘图,可是依然看不到结果.
    另外问一下 paint()是哪个包里的?自定义的?
    import java.awt.*; 
    import javax.swing.*; 
    import java.io.*; 
    import java.awt.event.*; public class draw extends JFrame implements ActionListener 
    { draw(String title) 

    //图形界面的初始化 
    super(title); JMenuItem item=new  JMenuItem("程序简介"); 
    item.addActionListener(this); JMenu Menu=new JMenu("关于"); 
    Menu.add(item); 
    JMenuBar bar=new JMenuBar(); 
    bar.add(Menu); 
    setJMenuBar(bar); 
    setSize(1400,800); 
    setVisible(true); 
    setLayout(new BorderLayout()); 
    setResizable(false); 
    setDefaultCloseOperation(EXIT_ON_CLOSE); //界面设置结束 validate(); } public void paint()
    {
    Graphics G=this.getGraphics(); 
    G.setColor(Color.PINK); G.drawLine(90,90,500,500); 
    }public void actionPerformed(ActionEvent e) //事件处理 

    //目前先不作处理 
    } public static void main(String []args) 

    draw d =new draw("画图板"); 
    d.paint();


      

  3.   

    我已经给你画出来了,你跟我当年犯了一样的错误,你在main函数Graphics G=this.getGraphics();  
    后面加上一句“super.paintComponents(G);”就OK了,这句代码是将父类也就是这个frame重绘,
    你可以理解为刷新,刷新后你才能看见,这是Windows的问题
    另外强烈建议楼主的代码规范点,类名小写,变量名大写,惨不忍睹,代码规范是很重要的事情,建议楼主
    多加注意