Der Versuch, Schwenkrahmen nach vorne zu bringen, bevor Sie einen Screenshot nehmen aber immer Artefakte

StackOverflow https://stackoverflow.com/questions/1280333

Frage

Ich habe einen Teil meiner app, die einen Screenshot von einem bestimmten Fenster nimmt aber bevor ich das tue, so will ich das Fenster in den Vordergrund bringen. Dies funktioniert auf meinem Mac Maschine in Ordnung, aber wenn ich es in Windows XP getestet auf Parallelen der Screenshot hat immer einen abgeblendet Bereich, in dem das überlappende Fenster war. Es scheint, der Screenshot immer genommen wird, während das Fenster, das ich oben will, ist nach oben übertragen werden. Ich habe versucht, mit beiden:

     frame.setVisible(true);
            and
     frame.setAlwaysOnTop(true);

Hat jemand eine vernünftige Lösung für dieses Problem?

War es hilfreich?

Lösung

Wenn Sie versuchen, einen Screenshot von einem Fenster w von Java gemalt zu nehmen, können Sie es einfach fragen sich zu malen auf ein

BufferedImage bi = new BufferedImage(
    w.width, w.height, BufferedImage.TYPE_INT_RGB); 
Graphics g = bi.getGraphics();

durch die paint(g) Methode Fenster aufrufen. Anschließend können Sie die BufferedImage in einer Datei speichern. Wenn Sie ein externes Fenster sind Grabbing, dann glaube ich, Oscar Reyes hat Ihnen alle Antworten.

Andere Tipps

  • Sie können eine Verzögerung der den Thread hinzufügen, die den Screenshot nimmt.

  • Sie können den Screenshot aus dem Rahmen feuern, wenn der es Fokus gewonnen hat:

    class ScreenshotShooter implements FocusListener  {
        public void focusGained( FocusEvent e ) {
            // smile..... 
            // you may add a sec of delay here just be be sure.
        }
        public void focusLost( FocusEvent e ) {}
     }
    
    
     FocusListener focusListener = new ScreenshotShooter();
     frame.addFocusListener( focusListener );
     frame.setVisible( true ); // should autofire
     frame.remoe( focusListener);
    
  • Sie können beides tun.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top