import java.text.*
import java.awt.*
import javax.swing.*
import java.awt.geom.*
import java.util.*
import java.awt.event.*
/**
*
*
*/
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)
}
})
}
}
protected void paint(Graphics g) {// TODO Auto-generated method stub
g.setColor(255,0,0)
g.fillRect(0, 0, this.getWidth(), this.getHeight())
g.setColor(0,0, 255)
g.fillArc(x,y,d,d,0,360)
this.repaint()
}//画一个圆当做屏保图案坐标是x,y 大小是d
public void run() {
// TODO Auto-generated method stub
while(true){
if(x<=0){
dir=ran.nextInt(8)
while(dir==0||dir==3||dir==5)
dir=ran.nextInt(8)
}else if(y<=0){
dir=ran.nextInt(8)
while(dir==0||dir==1||dir==2)
dir=ran.nextInt(8)
}else if(x>=w){
dir=ran.nextInt(8)
while(dir==2||dir==4||dir==7)
dir=ran.nextInt(8)
}else if(y>=h){
dir=ran.nextInt(8)
while(dir==5||dir==6||dir==7)
dir=ran.nextInt(8)
}
switch(dir)
{
case 0: y-=5x-=5break
case 1: y-=5break
case 2: y-=5x+=5break
case 3: x-=5break
case 4: x+=5break
case 5: y+=5x-=5break
case 6: y+=5break
case 7: y+=5x+=5break
}
try {
Thread.currentThread().sleep(30)
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace()
}
this.repaint()
}
//这个撞到墙壁小球就会随机变换方向 达到屏搭锋保的效果
给你答穗个思路清枝卜啊 自己填完整了他
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)