第一个:import javax.swing.JFrame;
import java.awt.Image;
import java.awt.Robot;      //(自动)机器人类,本程序用于截屏
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.Rectangle;import java.awt.Graphics;public class L{
  public static void main(String[] args){
    new Sub_JFrame().setVisible(true);
    /*Sub_JFrame sj = new Sub_JFrame();
    sj.setVisible(true);
    sj.draw();*/
  }
}class Sub_JFrame extends JFrame{
  Image desktop;
  Dimension size;  
  Sub_JFrame(){
    this.init();
  }
  
  private void init(){
    this.setUndecorated(true);                          //设置未装饰 —— 无边框外饰
    this.setExtendedState(JFrame.MAXIMIZED_BOTH);       //设置扩展状态 —— 横纵双向最大化
    
    size = Toolkit.getDefaultToolkit().getScreenSize(); //获取屏幕尺寸
    try{                                                //捕获屏幕(截屏)
      desktop = new Robot().createScreenCapture(new Rectangle(0,0,(int)size.getWidth(),(int)size.getHeight()));
    }catch(Exception e){
      e.printStackTrace();
    } 
    
    this.setDefaultCloseOperation(Sub_JFrame.DISPOSE_ON_CLOSE);
                                                        //正常关闭程序,
  }
  public void paint(Graphics g){
    g.drawImage(desktop,0,0,null);
  }
  
  /*public void draw(){
    Graphics g = this.getGraphics();
    g.drawImage(desktop,0,0,null);
  }*/
}

解决方案 »

  1.   

    第二个:
    import javax.swing.JFrame;
    import java.awt.Image;
    import java.awt.Robot;      //(自动)机器人类,本程序用于截屏
    import java.awt.Dimension;
    import java.awt.Toolkit;
    import java.awt.Rectangle;import java.awt.Graphics;public class L{
      public static void main(String[] args){
        //new Sub_JFrame().setVisible(true);
        Sub_JFrame sj = new Sub_JFrame();
        sj.setVisible(true);
        sj.draw();
      }
    }class Sub_JFrame extends JFrame{
      Image desktop;
      Dimension size;  
      Sub_JFrame(){
        this.init();
      }
      
      private void init(){
        this.setUndecorated(true);                          //设置未装饰 —— 无边框外饰
        this.setExtendedState(JFrame.MAXIMIZED_BOTH);       //设置扩展状态 —— 横纵双向最大化
        
        size = Toolkit.getDefaultToolkit().getScreenSize(); //获取屏幕尺寸
        try{                                                //捕获屏幕(截屏)
          desktop = new Robot().createScreenCapture(new Rectangle(0,0,(int)size.getWidth(),(int)size.getHeight()));
        }catch(Exception e){
          e.printStackTrace();
        } 
        
        this.setDefaultCloseOperation(Sub_JFrame.DISPOSE_ON_CLOSE);
                                                            //正常关闭程序,
      }
      /*public void paint(Graphics g){
        g.drawImage(desktop,0,0,null);
      }*/
      
      public void draw(){
        Graphics g = this.getGraphics();
        g.drawImage(desktop,0,0,null);
      }
    }
      

  2.   

    在第二个程序中导入
    import java.lang.Thread;再把 Sub_JFrame 的 draw 方法改成  public void draw(){
        Graphics g = this.getGraphics();
        try{
          Thread.sleep(53);
        }catch(Exception e){
          e.printStackTrace();
        }
        g.drawOval(0,0,100,100);
        g.drawImage(desktop,0,0,null);
      }就是加个延时,又能画出来了,这是怎么回事?那个 53延时 是最小的延时,再小改成 52 以下就又画不出来了,这是怎么回事?