Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 355|回复: 0

[Swing学习]JAVA模仿屏保程序

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-11-3 23:55:40 | 显示全部楼层 |阅读模式
    全屏下运行,很像是WINDOWS下的屏保,会显示时钟,并且会随机自然地碰撞.全屏状态下如需退出,请按小键盘上的0退出.
    点击下载可执行的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
    +
    "

    height=
    "
    +
    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
    );
                     }
             });
         }
         
    }



      
      
       
       

         
       

         
       
      
    复制代码

    源码下载:http://file.javaxxz.com/2014/11/3/235539859.zip
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-11-12 08:56 , Processed in 0.432492 second(s), 46 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表