为什么main_frame.getGraphics()返回的值是null呢??? -----你从哪里看出结果是null?
但当我在Main_Frame类下用this.getGraphics()这样获得的值就是正常的...
------你从哪里看出结果的正常的?这些应该说清楚。

解决方案 »

  1.   

    我使用jb调试跟踪的的返回值,Tasia(这里是CSDN吗?) 能解决吗?
      

  2.   

    应该是你的main_frame还没有完全生成
      

  3.   

    你调用main_frame.getGraphics()的时候main_frame显示出来了吗?
    这跟调用的位置有关
    只有graphic需要的frame属性都设置完了,才能生成graphic
      

  4.   

    也就是说,我在另一个类中怎么控制java中界面类main_frame(这其中是一个在jb中建立一个Application时,自动生成的一个Frame界面)上的控件,及图像更新!!
      

  5.   

    flyingbug(迫切需要锻炼...) :main_frame?怎么让它生成完呢?
      

  6.   

    举个例子:
     public static void main(String[] args) {
            JFrame frame = new JFrame();
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setTitle("测试");
            System.out.println(frame.getGraphics());
     }
    这是输出是null如果:
     public static void main(String[] args) {
            JFrame frame = new JFrame();
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setTitle("测试");        JPanel panel = new JPanel();
            frame.setContentPane(panel);
            panel.setLayout(new FlowLayout());
            frame.setSize(300, 200);
            Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
            frame.setLocation((d.width - frame.getSize().width) / 2,
                            (d.height - frame.getSize().height) / 2);
            frame.setVisible(true);
            System.out.println(frame.getGraphics()); }这个时候,输出是:
    sun.java2d.SunGraphics2D[font=java.awt.Font[family=Dialog,name=Dialog,style=plain,size=12],color=java.awt.Color[r=0,g=0,b=0]]
      

  7.   

    只要调用了frame.setVisible(true)之后
    frame.getGraphics()返回的就不会是空了
      

  8.   

    你在另一个类中new了一个新的Main_Frame对象,调用这个对象的getGraphics()怎么可能得到原来已经有的那个窗体的graphics呢?这是两个不同的对象呀。现在这个新new的对象没有setVisible,那当然就get不到Graphics了嘛
      

  9.   

    所以你不应该在这里new新的对象,而应该把原来已经显示出来的Main_Frame对象作为参数传过来,再调用那个对象的getGraphics()
      

  10.   

    我这样把弹出窗体的变量引用过来了,正常了.  
          if (Main_Application.frame!=null){//假如主界面没抽取过
              Main_Application.frame.update(Main_Application.frame.getGraphics()); //当点了按钮后,更新所有的FRAME界面
              while (true) {
                i++;
                //Thread.currentThread().sleep(100);
                System.out.println("第" + i + "条记录成功抽取!!\n");
                Main_Application.frame.jTextInfoArea.setText("第" + i +
                    "条记录成功抽取!!\n");
                Main_Application.frame.jTextInfoArea.update(Main_Application.
                    frame.jTextInfoArea.getGraphics()); //更新监控的文本框界面
              }
            }
    但是执行到1500次的时候就报错了错误如下:
    java.lang.InternalError: getGraphics implemented only for Canvas Components at sun.awt.windows.WGraphics.createFromGraphics(Native Method)
      

  11.   

    请大家先不要管为什么我会用while (true)而没有跳出呢,是因为我现在做的系统,就相当一个后台监控程序一样,要在服务器端一直执行...谢谢大家了,答完马上给分!