用java写一个圣诞树,送给你的那个Ta

简介: 用java写一个圣诞树,送给你的那个Ta

临近圣诞节,复习不下去了就突然想画一棵圣诞树,正好苹果那么贵买不起就用这个表达一下心意吧

思路:

计划用Java的Graphics画笔画一个圣诞树,用若干个20*20像素的正方形表示。


1.首先用C写了个大概的样子出来确定了主要的写法和逻辑

圣诞树1.0

运行出来感觉这样的太丑了,就决定下面两个三角形都不要尖的部分了


确定了写法后就用Java来写,还是要用到图形化界面,在一个面板里直接用fillRect()方法画正方形

圣诞树2.0

画完只有一个树有点没意思,就用fillRoundRect()在树尖上加上了小球


画到这里还是没那味儿,就打算弄个开关让小球会变色模拟发光。加一个按钮添加事件,用来触发一个时间事件,通过时间事件每隔2秒就改变一下小球的颜色,最后还加上了一个背景音乐

圣诞树3.0


演示视频:


用Java画了一颗圣诞树


现在就有那味儿了


细节

画图形的时候要填充颜色,默认填充的Graphics画笔设置的颜色,可以用setColor()方法修改填充颜色,可以直接用Color类自带的几种颜色,但是实在是太丑了,所以可以选择先创建一个Color类的对象,然后打开PS选出喜欢的颜色查看这个颜色的RGB,然后设置该对象的RGB就可以得到这个颜色,最后将这个对象作为setColor()方法的参数即可

1Color red = new Color(255, 0, 0) ;
2g.setColor(red) ;

按钮设置为一个图片要用setIcon()方法,但是可能会有存在边框、背景颜色的问题,对于边框使用setBorder()方法,参数设置为null;对于背景颜色使用setContentAreaFilled()方法,参数设置为false

1onOff.setBorder(null) ;                    //去除边框 
2onOff.setContentAreaFilled(false) ;        //去除默认背景颜色

按钮图片大小不合适,首先要压缩图片,将图片放在ImageIcon类的一个对象中,然后使用setImage()方法,参数为icon.getImage().getScaledInstance(x,y, 0)

完整代码

完整代码如下:

Start.java

1package christmasTree;
2
3public class Start {
4
5    public static void main(String[] args) {
6        new MyFrame() ;
7    }
8
9}

MyFrame.java

1package christmasTree;
 2
 3import javax.swing.JFrame;
 4
 5public class MyFrame extends JFrame{
 6    MyPanel p ;
 7    MyFrame() {
 8        p = new MyPanel() ;
 9        add(p) ;
10        setBounds(400, 200, 800, 800) ;
11        setVisible(true) ;
12        validate() ;
13        setDefaultCloseOperation(MyFrame.EXIT_ON_CLOSE) ;
14    }
15}

总结:

提前祝大家圣诞快乐 ! ! ! !

完整项目链接:https://pan.baidu.com/s/15LrMHiNdnBsjDEO_1IMuKA 

提取码: qutw 复制这段内容后打开百度网盘手机App,操作更方便哦

相关文章
|
8月前
|
存储 Java
1038. 从二叉搜索树到更大和树 --力扣 --JAVA
给定一个二叉搜索树 root (BST),请将它的每个节点的值替换成树中大于或者等于该节点值的所有节点值之和。 提醒一下, 二叉搜索树 满足下列约束条件: 节点的左子树仅包含键 小于 节点键的节点。 节点的右子树仅包含键 大于 节点键的节点。 左右子树也必须是二叉搜索树。
67 1
|
7月前
|
存储 算法 Java
Java中,树与图的算法涉及二叉树的前序、中序、后序遍历以及DFS和BFS搜索。
【6月更文挑战第21天】Java中,树与图的算法涉及二叉树的前序、中序、后序遍历以及DFS和BFS搜索。二叉树遍历通过访问根、左、右子节点实现。DFS采用递归遍历图的节点,而BFS利用队列按层次访问。以下是简化的代码片段:[Java代码略]
56 4
|
8月前
|
Java
Tree Traversals Again(Java语言)(先序和中序创建二叉树)(遍历树)
Tree Traversals Again(Java语言)(先序和中序创建二叉树)(遍历树)
46 4
|
5月前
|
存储 Java
|
5月前
|
存储 Java
|
7月前
|
存储 安全 Java
深入解析Java HashMap的高性能扩容机制与树化优化
深入解析Java HashMap的高性能扩容机制与树化优化
176 1
|
7月前
|
Java
JAVA中的AVL树实现
JAVA中的AVL树实现
77 1
|
7月前
|
Java
赫夫曼树(java)
赫夫曼树(java)
|
7月前
|
算法 Java Go
【经典算法】LeetCode 100. 相同的树(Java/C/Python3/Go实现含注释说明,Easy)
【经典算法】LeetCode 100. 相同的树(Java/C/Python3/Go实现含注释说明,Easy)
60 0
|
8月前
|
SQL Java 关系型数据库
java 递归返回树形组织结构(附带树形菜单的搜索)
java 递归返回树形组织结构(附带树形菜单的搜索)
154 0