Here is my code.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class SimuScreenSaver extends JFrame
{
public int maxPaintLimit=100;
private JLabel aLabel;
private ScreenSaverPanel aPanel;
class TextFieldAction implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String s = e.getActionCommand();
try{
int i = new Integer(s).intValue();
maxPaintLimit = i;
aLabel.setText(String.valueOf(maxPaintLimit));
}catch(NumberFormatException ex){
aLabel.setText("Invalid Input");
}
}
}
public SimuScreenSaver()
{
super("Screen Saver Simulator");
Container c = getContentPane();
JTextField atextField = new JTextField("100");
atextField.addActionListener( new TextFieldAction() );
c.add(atextField,BorderLayout.NORTH);
aLabel = new JLabel("Label");
c.add(aLabel,BorderLayout.SOUTH);
ScreenSaverPanel aPanel = new ScreenSaverPanel(this);
c.add(aPanel);
setSize(800,600);
//setBackground(Color.black);
show();
}
public static void main(String [] args)
{
SimuScreenSaver app = new SimuScreenSaver();
app.addWindowListener(
new WindowAdapter() {
public void windowClosing( WindowEvent e )
{
System.exit(0);
}
}
);
}
}
class ScreenSaverPanel extends JPanel implements ActionListener
{
private SimuScreenSaver aFrame;
private int paintTimes;
ScreenSaverPanel(SimuScreenSaver aFrame)
{
this.aFrame = aFrame;
Timer timer = new Timer(500,this);
timer.start();
}
public void actionPerformed(ActionEvent e)
{
repaint();
}
public void paint(Graphics g)
{
int startX,startY,endX,endY;
if( ++paintTimes > aFrame.maxPaintLimit )
{
paintTimes = 0;
//g.setColor(Color.black);
g.fillRect(0,0,1024,768);
return;
}
g.setColor(new Color((int)(256*Math.random()),
(int)(256*Math.random()),
(int)(256*Math.random()))
);
startX = (int)(1024*Math.random());
startY = (int)(768*Math.random());
endX = (int)(1024*Math.random());
endY = (int)(768*Math.random());
g.drawLine(startX,startY,endX,endY);
}
}