简体   繁体   中英

How do you change a Java Applet into a Screensaver for Windows 8.1?

I have been trying for quite awhile to create a custom screen saver for windows 8.1. However through my research I have fond next to nothing on the subject, and any information I have found has either been outdated or from sources that are less than trust worthy. I have been using java for around 2 years now, but I'm still relatively new to programming in general, also I am currently using eclipse as a compiler, please help. Here is what I have currently:

    import java.applet.Applet;
    import java.awt.*;
    import java.util.*;
    import java.io.*;

    @SuppressWarnings("serial") 
    public class CatScreenSaver extends Applet  
    {
private int runs;
private Scanner c;
private Scanner c2;
private Font myFont;
private Font error;
private int yLoc;
private boolean dir;
private Random randgen; 
private Color col;  
private int sleep;
private boolean start;
public CatScreenSaver() throws FileNotFoundException 
{
    runs = 0;
    yLoc = 570;
    dir = false;
    c = new Scanner(new File("cat.txt"));
    myFont = new Font("Consolas", 10, 10);
    error = new Font("Consolas", 20, 20);
    c2 = new Scanner(new File("cat2.txt"));
    randgen = new Random(); 
    sleep = 64;
    start=true;     
}   
public void init()
{
    col =Color.LIGHT_GRAY;
    setSize(4000,650);
    setBackground(Color.BLACK); 
}
public void paint(Graphics g)
{
    g.setFont(error);
    g.setColor(Color.red);
    g.drawString("We are experiencing technical difficulties, Please wait...", 250, 50);
    g.drawString("In the mean time enjoy this dancing cat!", 250, 70);
    if(!dir && !start)
    {
        try {
            printCat(g);
        } catch (FileNotFoundException | InterruptedException e) {          
            e.printStackTrace();
        }
    }
    else if(dir && !start)
    {
        try {
            printCat2(g);
        } catch (FileNotFoundException | InterruptedException e) {          
            e.printStackTrace();
        }
    }
    else if(!dir && start)
    {
        try {
            printSCat(g);
        } catch (FileNotFoundException | InterruptedException e) {          
            e.printStackTrace();
        }
    }
    else if(dir && start)
    {
        try {
            printSCat2(g);
        } catch (FileNotFoundException | InterruptedException e) {          
            e.printStackTrace();
        }
    }
}
public void printSCat(Graphics g) throws FileNotFoundException, InterruptedException
{
    g.setColor(col);
    g.setFont(myFont);
    int lines;          
    lines = c.nextInt();
    for(int i = 0; i < lines; i++)
    {
        String str = c.nextLine();              
        g.drawString(str, yLoc, (i*10));                
    }           
    runs++;
    if(runs == 31)
    {
        dir = true;         
        setScan();
    }
    Thread.sleep(sleep);
    repaint();
}
public void printSCat2(Graphics g) throws FileNotFoundException, InterruptedException
{
    g.setColor(col);
    g.setFont(myFont);
    int lines;          
    lines = c2.nextInt();
    for(int i = 0; i < lines; i++)
    {
        String str = c2.nextLine();             
        g.drawString(str, yLoc, (i*10));                
    }           
    runs--;
    if(runs == 0)
    {
        dir = false;            
        setScan();
        start = false;
    }
    Thread.sleep(sleep);
    repaint();
}
public void printCat(Graphics g) throws FileNotFoundException, InterruptedException
{
    g.setColor(col);
    g.setFont(myFont);
    int lines;          
    lines = c.nextInt();
    for(int i = 0; i < lines; i++)
    {
        String str = c.nextLine();              
        g.drawString(str, yLoc, (i*10));                
    }       
    yLoc-=20;       
    runs++;
    if(runs == 31)
    {
        dir = true;
        changeColor();
        setScan();
    }
    Thread.sleep(sleep);
    repaint();
}   
public void printCat2(Graphics g) throws FileNotFoundException, InterruptedException
{
    g.setColor(col);
    g.setFont(myFont);
    int lines;
    lines = c2.nextInt();
    for(int i = 0; i < lines; i++)
    {
        String str = c2.nextLine();             
        g.drawString(str, yLoc, (i*10));                
    }
    runs--;
    yLoc+=20;
    if(runs==0)
    {
        dir = false;
        changeColor();
        setScan();
    }
    Thread.sleep(sleep);            
    repaint();
}
public void changeColor()
{
    int rand = randgen.nextInt(10)-1;
    if(rand==1)
        col = Color.DARK_GRAY;
    else if(rand==2)
        col = Color.green;
    else if(rand==3)
        col=Color.BLUE;
    else if(rand==4)
        col = Color.CYAN;
    else if(rand==5)
        col =Color.MAGENTA;
    else if(rand==6)
        col =Color.YELLOW;
    else if(rand==7)
        col =Color.PINK;
    else if(rand==8)
        col =Color.ORANGE;
    else if(rand==9)
        col =Color.LIGHT_GRAY;
    else
        col =Color.WHITE;
}
public void setScan()throws FileNotFoundException 
{
    c = new Scanner(new File("cat.txt"));
    c2 = new Scanner(new File("cat2.txt"));
}       
}

Also the code uses 2 text files to "print" to the screen

To create standalone GUI application please use java swing or (latest) JavaFX, then you would be able to create standalone java application, now you can run gui application using java command inside JVM.

In order to setup you java program to run as screensaver in windows - you need to package java program (jar) then create some sort of exe/scr so that you can setup window to use your screensaver to run.

Quick google search found below link. Probably you can use same process with swing as well.

JavaFX Screensaver

Similiar question

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM