Search code examples
javascreensaver

Turn Java App into Windows Screensaver


I wrote a program that solves mazes with depth-first search. I was wondering how to turn this Java program into a Screensaver application? Is there a way that Windows 7 starts my app when the screensaver would normally be activated?


Solution

  • A Windows screen saver is just program that accepts certain command line arguments. So in order to have your program be runnable as a screen saver you must code it to accept those arguments.

    Next you will probably want your screen saver to run in full screen mode. This is very simple to do in Java as the example below shows:

     public final class ScreenSaver {
    
         public static final void main(final String[] args) throws Exception {
             UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    
             final JFrame screenSaverFrame = new JFrame();
             screenSaverFrame.setDefaultCloseOperation(
                 WindowConstants.EXIT_ON_CLOSE);
             screenSaverFrame.setUndecorated(true);
             screenSaverFrame.setResizable(false);
             screenSaverFrame.add(new JLabel("This is a Java Screensaver!",
                                  SwingConstants.CENTER), BorderLayout.CENTER);
             screenSaverFrame.validate();
             GraphicsEnvironment.getLocalGraphicsEnvironment()
                       .getDefaultScreenDevice()
                       .setFullScreenWindow(screenSaverFrame);
        }
    }
    

    Finally you will need to make your Java program into a Windows executable using something like Launch4j and give it .scr extension.