这也是以前写的一个东西,全屏下运行,很像是WINDOWS下的屏保,会显示时钟,并且会随机自然地碰撞.全屏状态下如需退出,请按小键盘上的0退出.
点击下载可执行的JAR文件,JDK1.5以上
点击下载可执行的JAR文件,JDK1.5以上
import
java.text.
*
;
import java.awt. * ;
import javax.swing. * ;
import java.awt.geom. * ;
import java.util. * ;
import java.awt.event. * ;
/*
* ScreenTest.java
*
* Created on 2006年7月6日, 下午5:23
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
/**
*
* @author lbf
*/
public class ScreenTest extends JPanel implements Runnable{
/** Creates a new instance of ScreenTest */
private String time;
private Rectangle2D rd;
private int x,y,a,b; // 座标值和方向值
private int rgb = 0 ; // 颜色的值
private Color color; // 字体的颜色
private int width,height; // 屏幕的大小
public ScreenTest( int width, int height) {
this .width = width;
this .height = height;
initWindow();
}
private void initWindow(){
x = ( int )(Math.random() * 300 );
y = ( int )(Math.random() * 500 );
a = 1 ;
b = 1 ;
this .setBackground(Color.BLACK);
this .setOpaque( true );
rd = new Rectangle2D.Double( 10 , 10 , 101 , 10 );
color = Color.YELLOW;
}
private void doColor(){
rgb = ( int )(Math.random() * 0xFFFFFF );
color = new Color(rgb);
}
public void paintComponent(Graphics g){
g.setColor(Color.BLACK);
g.fillRect( 0 , 0 ,width,height);
g.setColor(color);
g.setFont( new Font( " 楷书 " ,Font.BOLD, 150 ));
FontMetrics fm = g.getFontMetrics();
rd = fm.getStringBounds(time,g);
g.drawString(time,x,( int )(y + rd.getHeight()));
}
private void doTime(){
Calendar cal = Calendar.getInstance();
DateFormat df = DateFormat.getTimeInstance(DateFormat.MEDIUM);
Date date = cal.getTime();
time = df.format(date);
x += a;
y += b;
double width1 = rd.getWidth();
double height1 = rd.getHeight();
rd.setRect(x,y,width1,height1);
if (rd.intersectsLine(width, 0 ,width,height)){
doColor();
a =- 1 ;
}
else if (rd.intersectsLine( 0 , 0 , 0 ,height)){
doColor();
a = 1 ;
}
else if (rd.getY() <=- 80 ){
doColor();
b = 1 ;
}
else if (rd.intersectsLine( 0 ,height,width,height)){
doColor();
b =- 1 ;
}
}
public void run(){
while ( true ){
try {
Thread.sleep( 2 );
doTime();
repaint();
}
catch (InterruptedException ie){
ie.printStackTrace();
}
}
}
public static void main(String arsg[]){
GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
DisplayMode dm = gd.getDisplayMode();
int width = dm.getWidth();
int height = dm.getHeight();
System.out.println( " width= " + width + " \nheight= " + height);
ScreenTest st = new ScreenTest(width,height);
final JFrame jf = new JFrame();
jf.getContentPane().add(st,BorderLayout.CENTER);
jf.setUndecorated( true );
gd.setFullScreenWindow(jf);
new Thread(st).start();
jf.addKeyListener( new KeyAdapter(){
public void keyReleased(KeyEvent ke){
if (ke.getKeyCode() == KeyEvent.VK_NUMPAD0)
System.exit( 0 );
}
});
}
}
import java.awt. * ;
import javax.swing. * ;
import java.awt.geom. * ;
import java.util. * ;
import java.awt.event. * ;
/*
* ScreenTest.java
*
* Created on 2006年7月6日, 下午5:23
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
/**
*
* @author lbf
*/
public class ScreenTest extends JPanel implements Runnable{
/** Creates a new instance of ScreenTest */
private String time;
private Rectangle2D rd;
private int x,y,a,b; // 座标值和方向值
private int rgb = 0 ; // 颜色的值
private Color color; // 字体的颜色
private int width,height; // 屏幕的大小
public ScreenTest( int width, int height) {
this .width = width;
this .height = height;
initWindow();
}
private void initWindow(){
x = ( int )(Math.random() * 300 );
y = ( int )(Math.random() * 500 );
a = 1 ;
b = 1 ;
this .setBackground(Color.BLACK);
this .setOpaque( true );
rd = new Rectangle2D.Double( 10 , 10 , 101 , 10 );
color = Color.YELLOW;
}
private void doColor(){
rgb = ( int )(Math.random() * 0xFFFFFF );
color = new Color(rgb);
}
public void paintComponent(Graphics g){
g.setColor(Color.BLACK);
g.fillRect( 0 , 0 ,width,height);
g.setColor(color);
g.setFont( new Font( " 楷书 " ,Font.BOLD, 150 ));
FontMetrics fm = g.getFontMetrics();
rd = fm.getStringBounds(time,g);
g.drawString(time,x,( int )(y + rd.getHeight()));
}
private void doTime(){
Calendar cal = Calendar.getInstance();
DateFormat df = DateFormat.getTimeInstance(DateFormat.MEDIUM);
Date date = cal.getTime();
time = df.format(date);
x += a;
y += b;
double width1 = rd.getWidth();
double height1 = rd.getHeight();
rd.setRect(x,y,width1,height1);
if (rd.intersectsLine(width, 0 ,width,height)){
doColor();
a =- 1 ;
}
else if (rd.intersectsLine( 0 , 0 , 0 ,height)){
doColor();
a = 1 ;
}
else if (rd.getY() <=- 80 ){
doColor();
b = 1 ;
}
else if (rd.intersectsLine( 0 ,height,width,height)){
doColor();
b =- 1 ;
}
}
public void run(){
while ( true ){
try {
Thread.sleep( 2 );
doTime();
repaint();
}
catch (InterruptedException ie){
ie.printStackTrace();
}
}
}
public static void main(String arsg[]){
GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
DisplayMode dm = gd.getDisplayMode();
int width = dm.getWidth();
int height = dm.getHeight();
System.out.println( " width= " + width + " \nheight= " + height);
ScreenTest st = new ScreenTest(width,height);
final JFrame jf = new JFrame();
jf.getContentPane().add(st,BorderLayout.CENTER);
jf.setUndecorated( true );
gd.setFullScreenWindow(jf);
new Thread(st).start();
jf.addKeyListener( new KeyAdapter(){
public void keyReleased(KeyEvent ke){
if (ke.getKeyCode() == KeyEvent.VK_NUMPAD0)
System.exit( 0 );
}
});
}
}