利用Java编写一个出敬业福的小程序

 更新时间:2022年01月25日 10:15:20   作者:每日小新  
新年将至,又开始扫福活动,每年的敬业福成了大家难过的坎。所以本文将介绍一个通过Java编写的一款福字生成器,感兴趣的小伙伴可以试一试

1、前言

“福”的由来: 姜太公封一大批神仙时,却把自己的妻子叶氏封为穷神,还告诉她说:“有福的地方,你不能去。”从此,家家过年贴福字,就是告诉穷神,我这里是有福的地方,你千万不能进来。福字,就是摆脱穷困、追求幸福的象征。

福字之所以倒贴,传说起于清代恭亲王府。那年春节前夕,大管家按例写了几个斗大的“福”字,叫人贴于王府的大门上。有个家丁目不识丁,竟将“福”字头朝下贴上。恭亲王福晋十分气恼,欲鞭罚惩戒。可这大管家是个能言善辩之人,慌忙跪倒陈述:“奴常听人说,恭亲王寿高福大,如今大福真的到(倒)了。乃喜庆之兆。”恭亲王一听觉得合情合理,心想:“怪不得过往行人都说恭亲王福到(倒)了,吉语说千遍,金银增万贯。没学问的奴才,还真想不到有这种招式呢!”遂赏管家和家丁各五十两银子,可真是因祸得福。

新年将至,又开始扫福活动,每年的敬业福成了大家难过的坎,于是编写一款福字生成器,提高大家扫福的效率与扫到敬业福的概率,小编已经扫出,废话不多说,直接上代码(都在用Python写好玩的,我就用Java写点好玩的)

2、定义工具类

这两个工具类其实可以不专门写出来,随意一点啦~

① 字体工具类

package com.mrxx.game;
import java.awt.*;
/*字体工具类*/
public class FontUtil {
    public static void drawWord(Graphics g,String str,Color color,int size,int x,int y,String font){
        g.setColor(color);
        g.setFont(new Font(font,Font.BOLD,size));
        g.drawString(str,x,y);
    }
}

② 图片工具类

package com.mrxx.game;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
/*图片工具类*/
public class ImgTool {

  //提取图片工具1
  public static BufferedImage getimg(String path){
    BufferedImage img=null;
    try {
      img= ImageIO.read(new File(path));
    } catch (IOException e) {
      e.printStackTrace();
    }
    return img;
  }

  //工具2
  public static Image getImage(String filename){
    return Toolkit.getDefaultToolkit().getImage(filename);
  }
}

3、生成"福"主类

package com.mrxx.game;

import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.image.BufferedImage;
import java.util.Arrays;
import java.util.List;
/*主类*/
public class RandFu extends JFrame {
    List<Color> colorList;
    List<String> arrayList;
    Integer index,fontRandom;
    BufferedImage bg=null;
    public RandFu(){
        arrayList= Arrays.asList("楷体","宋体","华文琥珀","华文行楷","幼圆","华文新魏","华文彩云","隶书");
        fontRandom=(int)((Math.random()*10)%8);
        System.out.println("字体:"+arrayList.get(fontRandom));
        bg=ImgTool.getimg("src/com/mrxx/img/bg.jpg");
        //初始化
        colorList=Arrays.asList(Color.gray,Color.black,Color.PINK, Color.orange,Color.RED);
        index=(int) ((Math.random()*10)%5);
        System.out.println("字体颜色"+index);
        setSize(600,600);
        setIconImage(ImgTool.getImage("src/com/mrxx/img/fu.png"));
        setLocationRelativeTo(null);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
        setBackground(Color.red);

        //键盘监听
        //设置面板键盘监听
        this.addKeyListener(new KeyAdapter() {
            //重写键盘监听方法
            @Override
            public void keyPressed(KeyEvent e) {
                //判断是否是空格
                if (e.getKeyCode() == KeyEvent.VK_SPACE) {
                    reGame();
                }
            }
        });

    }

    //重启
    public void reGame(){
        //关闭当前窗口
        this.dispose();
        //开启新窗口
        String[] args={};
        main(args);
    }


    @Override
    public void paint(Graphics g){
        //画背景
        g.drawImage(bg,15,50,570,535,null);
        FontUtil.drawWord(g,"福",colorList.get(index),250,163,400,arrayList.get(fontRandom));
        //repaint();
    }

    public static void main(String[] args) {
        RandFu randFu=new RandFu();
    }
}

以上就是全部代码

4、运行测试

程序启动后空格键进行“福”字的随机生成,部分效果演示:

5、素材图片

以下两种图片一个是背景,一个是标题图片(不想动手的,可以直接下载我上传的资源(免费),有兴趣的可以参考我以前的文章把这个程序打包成exe的应用)使用方式空格键即可

到此这篇关于利用Java编写一个出敬业福的小程序的文章就介绍到这了,更多相关Java内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • spring boot 枚举使用的坑整理

    spring boot 枚举使用的坑整理

    在本篇文章里我们给大家整理了关于spring boot 枚举使用的坑以及相关知识点内容,需要的朋友们学习下。
    2019-08-08
  • Java synchornized与ReentrantLock处理并发出现的错误

    Java synchornized与ReentrantLock处理并发出现的错误

    synchronized机制提供了对每个对象相关的隐式监视器锁,并强制所有锁的获取和释放都必须在同一个块结构中。当获取了多个锁时,必须以相反的顺序释放。即synchronized对于锁的释放是隐式的
    2023-01-01
  • Python安装Jupyter Notebook配置使用教程详解

    Python安装Jupyter Notebook配置使用教程详解

    这篇文章主要介绍了Python安装Jupyter Notebook配置使用教程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • 基于Java实现考试管理系统

    基于Java实现考试管理系统

    这篇文章主要介绍了基于Java实现的考试管理系统,项目运用到的技术有Springboot、Maven、Jpa、Vue等等,感兴趣的小伙伴可以跟随小编一起学习一下
    2021-12-12
  • SpringBoot+Vue实现EasyPOI导入导出的方法详解

    SpringBoot+Vue实现EasyPOI导入导出的方法详解

    项目开发过程中,很大的需求都有 导入导出功能。本文将利用SpringBoot+Vue实现EasyPOI导入导出功能,感兴趣的可以了解一下
    2022-08-08
  • mybatis plus实现条件查询

    mybatis plus实现条件查询

    这篇文章主要为大家介绍了mybatis plus实现条件查询,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • windows命令行中java和javac、javap使用详解(java编译命令)

    windows命令行中java和javac、javap使用详解(java编译命令)

    最近重新复习了一下java基础,这里便讲讲对于一个类文件如何编译、运行、反编译的。也让自己加深一下印象
    2014-03-03
  • Java经典面试题最全汇总208道(四)

    Java经典面试题最全汇总208道(四)

    这篇文章主要介绍了Java经典面试题最全汇总208道(四),本文章内容详细,该模块分为了六个部分,本次为第四部分,需要的朋友可以参考下
    2023-01-01
  • java设计模式之工厂模式详解

    java设计模式之工厂模式详解

    本文介绍了三种常见的设计模式:简单厂模式、工厂方法模式和抽象工厂模式,简单厂模式通过一个工厂类来生产不同的产品实例,例如同时生产华为和小米手机,工厂方法模式则通过定义一个创建对象的接口,让子类决定实例化哪一个类
    2024-11-11
  • Maven中的SnapShot版本和正式版本的区别

    Maven中的SnapShot版本和正式版本的区别

    在Nexus仓库中,一个仓库一般分为public(Release)仓和SNAPSHOT仓,本文详细的介绍了SnapShot版本和正式版本的区别,感兴趣的可以了解一下
    2021-06-06

最新评论