圣诞节用java画一棵圣诞树给你的女友
一、背景
本文主要内容包括如何使用
Java-JFrame
可视化开发,实现一棵动态的圣诞树。好文章 记得 收藏+点赞+关注 !!!
二、效果预览
通过左上角的按钮打开动态效果!
话不多说,直接上代码!
三、完整代码
/*** @author JiaMing* @since 2021/12/17/0017 下午 13:47**/public class MyPanel extends JPanel implements ActionListener {/*** 坐标*/public int x, y;/*** 开关按钮*/public JButton onOff;/*** 触发时间事件*/public Timer time;/*** 判断开关*/public boolean flag;/*** 控制动画*/public boolean color;//获取本地音乐File file = new File("E:\\christmasTree\\music.wav");URL url = null;URI uri = null;AudioClip clip;MyPanel() {setLayout(null);//获取本地关闭按钮ImageIcon icon = new ImageIcon("E:\\christmasTree\\OFF.png");icon.setImage(icon.getImage().getScaledInstance(50, 50, 0));onOff = new JButton();onOff.addActionListener(this);//添加按钮图片onOff.setIcon(icon);//设置 取消边框onOff.setBorder(null);//设置 取消默认背景颜色onOff.setContentAreaFilled(false);onOff.setBounds(0, 0, 50, 50);add(onOff);flag = true;color = true;time = new Timer(300, this);time.stop();try {uri = file.toURI();url = uri.toURL();} catch (MalformedURLException e1) {e1.printStackTrace();}clip = Applet.newAudioClip(url);}public void paintComponent(Graphics g) {x = 380;y = 100;if (color) {ImageIcon image1 = new ImageIcon("E:\\christmasTree\\2.png");g.drawImage(image1.getImage(), x - 3, y - 25, 25, 25, null);} else {ImageIcon image1 = new ImageIcon("E:\\christmasTree\\1.png");g.drawImage(image1.getImage(), x - 2, y - 24, 26, 26, null);}Color red = new Color(255, 0, 0);Color yellow = new Color(255, 241, 0);//画第一个三角形(第一层圣诞树)drawTree(1, 4, g);if (color) {//画第一个三角形的黄色装饰drawDecoration(x + 22, y - 44, 6, yellow, g);//画第一个三角形的红色装饰drawDecoration(x, y - 22, 8, red, g);} else {//画第一个三角形的红色装饰drawDecoration(x + 22, y - 44, 6, red, g);//画第一个三角形的黄色装饰drawDecoration(x, y - 22, 8, yellow, g);}x = 380 - 2 * 22;//画第二个三角形(中间层)drawTree(3, 6, g);if (color) {//画第二个三角形的黄色装饰drawDecoration(x + 22, y - 44, 10, yellow, g);//画第二个三角形的红色装饰drawDecoration(x, y - 22, 12, red, g);} else {//画第二个三角形的红色装饰drawDecoration(x + 22, y - 44, 10, red, g);//画第二个三角形的黄色装饰drawDecoration(x, y - 22, 12, yellow, g);}x = 380 - 4 * 22;//画第三个三角形(最底层)drawTree(5, 8, g);if (color) {//画第三个三角形的黄色装饰drawDecoration(x + 22, y - 44, 14, yellow, g);//画第三个三角形的红色装饰drawDecoration(x, y - 22, 16, red, g);} else {//画第三个三角形的红色装饰drawDecoration(x + 22, y - 44, 14, red, g);//画第三个三角形的黄色装饰drawDecoration(x, y - 22, 16, yellow, g);}x = 380 - 22;//画出树根drawRoot(g);}//画树void drawTree(int from, int to, Graphics g) {//设置树的颜色g.setColor(new Color(9, 124, 37));for (int i = from; i <= to; i++) {for (int j = 0; j < (i * 2 - 1); j++) {g.fillRect(x, y, 20, 20);x += 22;}x = 380 - i * 22;y += 22;}}//画装饰void drawDecoration(int tx, int ty, int num, Color c, Graphics g) {g.setColor(c);g.fillRoundRect(tx, ty, 18, 18, 18, 18);g.fillRoundRect(tx + num * 22, ty, 18, 18, 18, 18);}//画树根void drawRoot(Graphics g) {//设置树根颜色g.setColor(new Color(131, 78, 0));for (int i = 0; i < 4; i++) {for (int j = 0; j < 3; j++) {g.fillRect(x, y, 20, 20);x += 22;}x = 380 - 22;y += 22;}}public void actionPerformed(ActionEvent e) {//按钮事件if (e.getSource() == onOff) {//开关打开if (flag) {ImageIcon icon = new ImageIcon("E:\\christmasTree\\ON.png");icon.setImage(icon.getImage().getScaledInstance(50, 50, 0));onOff.setIcon(icon);flag = false;clip.loop();time.restart();} else {//开关关闭ImageIcon icon = new ImageIcon("E:\\christmasTree\\OFF.png");icon.setImage(icon.getImage().getScaledInstance(50, 50, 0));onOff.setIcon(icon);flag = true;time.stop();clip.stop();}} else if (e.getSource() == time) {repaint();color = !color;}}}
/*** @author JiaMing* @since 2021/12/17/0017 下午 13:43**/public class MyFrame extends JFrame {MyPanel p;MyFrame() {p = new MyPanel();add(p);//设置布局setBounds(400, 200, 800, 800);setVisible(true);validate();setDefaultCloseOperation(MyFrame.EXIT_ON_CLOSE);//添加文字标签 可以添加你想发给的人的名字哦JLabel label1 = new JLabel("merry christmas!");//设置字体,格式(斜体,粗细),尺寸label1.setFont(new Font("宋体", Font.BOLD, 30));//设置标签颜色label1.setForeground(Color.red);label1.setBounds(250, 300, 500, 400);p.add(label1);p.setVisible(true);}}
接下来是主函数,用这个来运行!
/*** @author JiaMing* @since 2021/12/17/0017 下午 14:13**/
public class Main {public static void main(String[] args) {new MyFrame();}
}
推荐阅读:
- 由银行填表时返回上一步引发的对回溯算法的思考(java实现回溯算法)
- 上班摸鱼时引发的对多线程的思考
参考博客:https://blog.csdn.net/weixin_44689154/article/details/103690144
写在最后:
我的女朋友说这个圣诞树极其丑陋,建议发给女朋友之前三思!
以下是她的评价:
ok,我话说完…
圣诞节用java画一棵圣诞树给你的女友相关推荐
- 圣诞节用Python画一颗圣诞树
圣诞节用Python画一颗圣诞树 前言 一.初级圣诞树 二.中级圣诞树 三.高级圣诞树 四.超高级圣诞树 总结 前言 正在学Python的你是不是很想在圣诞节给女朋友一个惊喜? 哦!忘了,或许你压根儿 ...
- 如何用java画一颗圣诞树
如何用java画一颗圣诞树 哈喽 ,今天教各位一个有趣的代码,利用for循环简单地画一个圣诞树. 代码如下: ```java public class Dan {public static void ...
- 用代码画两棵圣诞树送给你【附详细代码】
大家好,我是宁一 代码的魔力之处在于,可以帮我们实现许多奇奇怪怪.有趣的想法. 比如,用Python的Turtle库,可以帮我们在电脑上画出好看的图像. 下面这张樱花图就是用Turtle库实现的. 这 ...
- python turtle画圣诞树动图_用 turtle 画一棵圣诞树
蹭个洋年的热点,练一下刚学的 turtle 库. 本来想加个亮闪闪的灯光的效果,想来想去,只能想到利用time.sleep()来重复绘制圆球,没别的好方法,就暂时不写了.等以后道行更高一点,再来补充这 ...
- 【小5聊】使用js+css+div布局方式画一棵圣诞树,带闪烁霓虹灯效果
虽然jQuery时代已经逐渐退出历史舞台,在拥抱vue的同时,也还是可以用jQuery锻炼下编程思维,毕竟比较灵活. 1.适合基础入门的前端小伙伴 2.适合使用jQuery锻炼实现前端效果小伙伴 3. ...
- 用c语言程序画圣诞树,【图片】用C语言画一棵“圣诞树”(前方高能,学渣小心避让!)【广西科技大学吧】_百度贴吧...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #include #define PI 3.14159265359 float sx, sy; float sdCir ...
- 小白都会的Python项目实战(附源码)3分钟画一棵圣诞树
前言 本文给大家分享的是如何通过 Python 脚本一次运行成功圣诞树代码,圣诞节快到了,兄弟们可以get起来了,拿去哄哄女朋友了! 开发工具 Python版本:3.11.0 编译器: pycharm ...
- 圣诞节到了,让我们用 Python 画几棵圣诞树,玩玩~
本人不崇尚洋节,此代码仅供玩乐, 快到圣诞节了,氿 柒先祝大家圣诞快乐 一:圣诞树弹窗(打印) import os import sys import platform import random i ...
- 用python画圣诞树图片-节日快乐! Python画一棵圣诞树送给你
本文实例为大家分享了Python画圣诞树的具体代码,供大家参考,具体内容如下 源代码 from turtle import * import random import time #from unit ...
最新文章
- JS:2.1,流程控制(if,switch)高级
- echarts加载动画效果_入门ae教程:科技类的加载动画,非常酷炫的效果,附带教程...
- PL/SQL Developer 9 注册机
- mysql安装忘了root_MySQL - 安装:MySQL忘记root密码的解决办法
- 小波分析理论与matlabr2007实现_HHT变换基本理论
- 暑假集训 || 网络流
- shell学习之定时运行作业
- 上海大华条码称代码_上海大华计价电子秤 使用软件 TM-H 大华条码称设置15KG
- 深度学习视频教程推荐
- 微信二维码来源统计自动生成二维码统计?
- 韩乔生最牛的一次解说 (超级搞笑)
- 三星i908、iPhone3G对比评测
- mybatis,引入pageHelper,参数中有pageNum和pageSize,且都不为空,会分页
- 套料排版代码python_钣金制造管理系统Fabcost自动套料排版设置
- php 验证码不正确,dedecms织梦网站后台登录一直提示验证码不正确
- Do it for success
- 台资企业管理职的中英文称谓以及级别
- 湖北校园网PC端拨号算法逆向
- Microland被Everest Group评为主要竞争者和明星企业
- Lazada开店流程介绍及需要的资料要求