Java 窗口 小马时钟
写在前面:
eclipse爽到
好多都是抄的,记不住原网址了
摸爆了
搞了一个无边框JFrame,给JFrame加入鼠标监听器实现了拖动
搞了按钮,可以关闭、最小化、始终显示在前、静音
icon是抄(截)Fimfiction上的,rt
默认背景是粉毛毛和邪茧(不要乱改图片,窗口大小是根据这张图片定的)
在JFrame上加了JLabel、AudioClip、JButton
可以整点报时(白天是音乐组荒岛舞曲,晚上是小蝶(云宝讲故事)+“两姐妹玩游戏”的旋律,yay~)
ps: 电脑必须有java才能用
运行效果:
上图为一般时候
上图为整点报时(白天)
Java代码如下:
1 package chryssi;
2
3 import java.applet.Applet;
4 import java.applet.AudioClip;
5 import java.net.URL;
6 import java.awt.*;
7 import java.awt.event.ActionEvent;
8 import java.awt.event.ActionListener;
9 import java.awt.event.MouseAdapter;
10 import java.awt.event.MouseEvent;
11 import java.awt.event.MouseMotionAdapter;
12 import java.io.*;
13 import java.util.*;
14 import javax.swing.ImageIcon;
15 import javax.swing.JButton;
16 import javax.swing.JFrame;
17 import javax.swing.JLabel;
18
19 public class PonyClock extends JFrame
20 {
21 static String ponyString;
22 static boolean ponymute=true;
23 static int pframexOri,pframeyOri,pframex,pframey;
24
25 public static void main(String[] args) throws Exception
26 {
27 JFrame ponyFrame=new JFrame("PonyClock");
28 JLabel ponyLabel = new JLabel("",JLabel.CENTER);
29 File directory = new File("");
30 ponyFrame.setIconImage(Toolkit.getDefaultToolkit().getImage(directory.getCanonicalPath()+"\\icons\\32.png"));
31 ImageIcon img00=new ImageIcon(Toolkit.getDefaultToolkit().getImage(directory.getCanonicalPath()+"\\pictures\\bg.png"));
32 ImageIcon img01=new ImageIcon(Toolkit.getDefaultToolkit().getImage(directory.getCanonicalPath()+"\\pictures\\kisses.gif"));
33 ImageIcon img02=new ImageIcon(Toolkit.getDefaultToolkit().getImage(directory.getCanonicalPath()+"\\pictures\\03.jpg"));
34 ImageIcon img03=new ImageIcon(Toolkit.getDefaultToolkit().getImage(directory.getCanonicalPath()+"\\pictures\\02.jpg"));
35 AudioClip ponyam,ponypm;
36 File ponyf1=new File(directory.getCanonicalPath()+"\\audio\\Octavia_in_Tropics.wav");
37 URL ponyurl1=ponyf1.toURI().toURL();
38 File ponyf2=new File(directory.getCanonicalPath()+"\\audio\\Two_Best_Sisters.wav");
39 URL ponyurl2=ponyf2.toURI().toURL();
40 JButton ponyb_front = new JButton("");
41 JButton ponyb_exit = new JButton("");
42 JButton ponyb_mute = new JButton("");
43 JButton ponyb_min = new JButton("");
44 ImageIcon ponyb_fronti = new ImageIcon(Toolkit.getDefaultToolkit().getImage(directory.getCanonicalPath()+"\\icons\\front.png"));
45 ImageIcon ponyb_nfronti = new ImageIcon(Toolkit.getDefaultToolkit().getImage(directory.getCanonicalPath()+"\\icons\\nfront.png"));
46 ImageIcon ponyb_exiti = new ImageIcon(Toolkit.getDefaultToolkit().getImage(directory.getCanonicalPath()+"\\icons\\exit.png"));
47 ImageIcon ponyb_mutei = new ImageIcon(Toolkit.getDefaultToolkit().getImage(directory.getCanonicalPath()+"\\icons\\mute.png"));
48 ImageIcon ponyb_nmutei = new ImageIcon(Toolkit.getDefaultToolkit().getImage(directory.getCanonicalPath()+"\\icons\\nmute.png"));
49 ImageIcon ponyb_mini = new ImageIcon(Toolkit.getDefaultToolkit().getImage(directory.getCanonicalPath()+"\\icons\\min.png"));
50
51 /*Whole*/
52 ponyFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
53 ponyFrame.setLayout(null);
54 ponyFrame.setResizable(false);
55 ponyFrame.setLocationRelativeTo(null);
56 ponyFrame.setSize(img01.getIconWidth(),img01.getIconHeight());
57 ponyFrame.setUndecorated(true);
58 ponyFrame.setAlwaysOnTop(false);
59 ponyFrame.setBackground(new Color(255,255,255,255));
60 ponyFrame.addMouseListener(new MouseAdapter() {
61 @Override
62 public void mousePressed(MouseEvent e) {
63 pframexOri=e.getX();
64 pframeyOri=e.getY();
65 }
66 });
67 ponyFrame.addMouseMotionListener(new MouseMotionAdapter() {
68 @Override
69 public void mouseDragged(MouseEvent e) {
70 ponyFrame.setLocation(e.getXOnScreen()-pframexOri,e.getYOnScreen()-pframeyOri);
71 }
72 });
73
74 /*BUTTON_FRONT*/
75 ponyb_front.setIcon(ponyb_nfronti);
76 ponyb_front.setSize(30, 30);
77 ponyb_front.setLocation(img01.getIconWidth()-125, 10);
78 ponyb_front.addActionListener(new ActionListener(){
79 public void actionPerformed(ActionEvent e)
80 {
81 if(ponyFrame.isAlwaysOnTop()==true)
82 {
83 ponyFrame.setAlwaysOnTop(false);
84 ponyb_front.setIcon(ponyb_nfronti);
85 }
86 else
87 {
88 ponyFrame.setAlwaysOnTop(true);
89 ponyb_front.setIcon(ponyb_fronti);
90 }
91 }
92 });
93 ponyFrame.add(ponyb_front);
94
95 /*BUTTON_EXIT*/
96 ponyb_exit.setIcon(ponyb_exiti);
97 ponyb_exit.setSize(30, 30);
98 ponyb_exit.setLocation(img01.getIconWidth()-45, 10);
99 ponyb_exit.addActionListener(new ActionListener(){
100 public void actionPerformed(ActionEvent e)
101 {
102 System.exit(0);
103 }
104 });
105 ponyFrame.add(ponyb_exit);
106
107 /*BUTTON_MUTE*/
108 ponyb_mute.setIcon(ponyb_mutei);
109 ponyb_mute.setSize(30, 30);
110 ponyb_mute.setLocation(img01.getIconWidth()-165, 10);
111 ponyb_mute.addActionListener(new ActionListener(){
112 public void actionPerformed(ActionEvent e)
113 {
114 if(ponymute==true)
115 {
116 ponymute=false;
117 ponyb_mute.setIcon(ponyb_nmutei);
118 }
119 else
120 {
121 ponymute=true;
122 ponyb_mute.setIcon(ponyb_mutei);
123 }
124 }
125 });
126 ponyFrame.add(ponyb_mute);
127
128 /*BUTTON_MIN*/
129 ponyb_min.setIcon(ponyb_mini);
130 ponyb_min.setSize(30, 30);
131 ponyb_min.setLocation(img01.getIconWidth()-85, 10);
132 ponyb_min.addActionListener(new ActionListener(){
133 public void actionPerformed(ActionEvent e)
134 {
135 ponyFrame.setState(Frame.ICONIFIED);
136 }
137 });
138 ponyFrame.add(ponyb_min);
139
140 /*TEXT*/
141 ponyFrame.add(ponyLabel);
142 ponyLabel.setSize(img01.getIconWidth(),img01.getIconHeight());
143 ponyLabel.setFont(new Font("",1,82));
144 ponyLabel.setForeground(new Color(255,255,255,255));
145
146 /*AUDIO*/
147 ponyam=Applet.newAudioClip(ponyurl1);
148 ponypm=Applet.newAudioClip(ponyurl2);
149
150 /*IMG00*/
151 JLabel Label00 = new JLabel(img00);
152 Label00.setSize(img00.getIconWidth(),img00.getIconHeight());
153 ponyFrame.add(Label00);
154
155 /*IMG01*/
156 JLabel Label01 = new JLabel(img01);
157 Label01.setSize(img01.getIconWidth(),img01.getIconHeight());
158 ponyFrame.add(Label01);
159
160 /*IMG02*/
161 JLabel Label02 = new JLabel(img02);
162 Label02.setSize(0,0);
163 ponyFrame.add(Label02);
164
165 /*IMG03*/
166 JLabel Label03 = new JLabel(img03);
167 Label03.setSize(0,0);
168 ponyFrame.add(Label03);
169
170 /*FINAL*/
171 ponyFrame.setVisible(true);
172
173 while(true)
174 {
175 if(Calendar.getInstance().get(Calendar.MINUTE)==0 && Calendar.getInstance().get(Calendar.SECOND)<=8)
176 {
177 ponyString=Calendar.getInstance().get(Calendar.HOUR_OF_DAY)+"";
178 ponyLabel.setText(ponyString);
179 ponyLabel.setForeground(new Color(0,0,0,255));
180 Label00.setSize(0,0);
181 Label01.setSize(0,0);
182 if(Calendar.getInstance().get(Calendar.HOUR_OF_DAY)>=8 && Calendar.getInstance().get(Calendar.HOUR_OF_DAY)<=19)
183 {
184 Label02.setSize(img02.getIconWidth(),img02.getIconHeight());
185 try{
186 if(ponymute==false) {ponyam.play();}
187 Thread.sleep(15000);
188 }catch (InterruptedException e){}
189 Label02.setSize(0,0);
190 }
191 else
192 {
193 Label03.setSize(img03.getIconWidth(),img03.getIconHeight());
194 try{
195 if(ponymute==false) {ponypm.play();}
196 Thread.sleep(12000);
197 }catch (InterruptedException e){}
198 Label03.setSize(0,0);
199 }
200 ponyLabel.setForeground(new Color(255,255,255,255));
201 Label00.setSize(img01.getIconWidth(),img01.getIconHeight());
202 Label01.setSize(img01.getIconWidth(),img01.getIconHeight());
203 }
204 else
205 {
206 ponyString=Calendar.getInstance().get(Calendar.HOUR_OF_DAY) + ":" + Calendar.getInstance().get(Calendar.MINUTE) + ":" + Calendar.getInstance().get(Calendar.SECOND);
207 ponyLabel.setText(ponyString);
208 try{
209 Thread.sleep(1000);
210 }catch (InterruptedException e){}
211 }
212 }
213 }
214
215 }
注释太少了,将就看吧
附件:
*jar所在目录*\\icons\\
32.png
exit.png
front.png
min.png
mute.png
nfront.png
nmute.png
*jar所在目录*\\pictures\\
01.jpg
02.jpg
03.jpg
bg.png
kisses.gif
*jar所在目录*\\audio\\
(见网盘)
完整版歌曲:https://www.bilibili.com/video/av42429289?from=search&seid=4061369087358968249
所有:
链接: https://盘.baidu.com/s/13SHi和谐Cdi0和谐7RP和谐lyKtp-ob和谐m4Q
提取码: 7rig
Java 窗口 小马时钟的更多相关文章
- Java 窗口 小马图像窗口
写在前面: eclipse接着爽到 全是借鉴的,东改西改,而且记不住原网址了 两个月前写的,忘了思路,嗯,It just works 运行效果: 图像随便选(放到*jar所在目录*\\pictures ...
- Android开发5:应用程序窗口小部件App Widgets的实现
前言 本次主要是实现一个Android应用,实现静态广播.动态广播两种改变 widget内容的方法,即在上篇博文中实验的基础上进行修改,所以此次实验的重点是AppWidget小部件的实现啦~ 首先,我 ...
- 在android程序中加入widget(窗口小部件)并与之交互的关键代码
摘要: widget(窗口小部件)可以增强应用程序的交互性, 是很多应用中都会用到的功能,本文不求大而全,但是会给出程序与widget交互的关键代码 正文: 其实widget是嵌入(embedded) ...
- Android 之窗口小部件详解--App Widget
Android 之窗口小部件详解--App Widget 版本号 说明 作者 日期 1.0 添加App Widge介绍和示例 Sky Wang 2013/06/27 1 App ...
- Android 之窗口小部件详解(三) 部分转载
原文地址:http://blog.csdn.net/iefreer/article/details/4626274. (一) 应用程序窗口小部件App Widgets 应用程序窗口小部件(Widget ...
- Android 之窗口小部件高级篇--App Widget 之 RemoteViews - 跨到对岸去
在之前的一篇博文( Android 之窗口小部件详解--App Widge t)中,已经介绍了App Widget的基本用法和简单实例.这篇主要讲解 App Widget 的高级内容,即通过 Remo ...
- Android 之窗口小部件高级篇--App Widget 之 RemoteViews
Android 之窗口小部件高级篇--App Widget 之 RemoteViews 在之前的一篇博文(Android 之窗口小部件详解--App Widget)中,已经介绍了App Widget的 ...
- Xamarin Forms:小马过河,王者归来
因为我媳妇的原因,去年下半年从零开始学习Android原生开发,做了一个答题库app.整体给我的感觉是入门难度不大,前期折腾一番,大部分时间都是花在开发上面,其实任何一门语言都是如此. 今年我又有另一 ...
- Java太阳系小游戏分析和源代码
Java太阳系小游戏分析和源代码 -20150809 近期看了面向对象的一些知识.然后跟着老师的解说做了一个太阳系各行星绕太阳转的小游戏,来练习巩固一下近期学的知识: 用到知识点:类的继承.方法的重载 ...
随机推荐
- golang遍历时修改被遍历对象
目录 前言 遍历切片 遍历map 总结 前言 很多时候需要将遍历对象中去掉某些元素,或者往遍历对象中添加元素,这时候就需要小心操作了. 对于go语言中的一些注意事项我做了总结和示例,留下点笔记. 遍历 ...
- maven 报的一堆错
今天初学maven,刚开始下载的是Apache-maven-3.6.2然后配置运行一个servlet,但是在pom.xml中写jar包坐标时一直报错显示红色,本地仓库和官网上的中央仓库都试过了就是依赖 ...
- 关于使用th:text获取不到值
今天在使用thymeleaf模板引擎整合SpringBoot时,对于从controller层传递过来的参数"message",无法获取. 控制层代码如下: @PostMapping ...
- Python利用最优化算法求解投资内部收益率IRR【一】
一. 内部收益率和净现值 内部收益率(Internal Rate of Return, IRR)其实要和净现值(Net Present Value, NPV)结合起来讲.净现值指的是某个投资项目给公司 ...
- mysql—group_concat函数
MySQL中的group_concat函数的使用方法,比如select group_concat(name) . 完整的语法如下: group_concat([DISTINCT] 要连接的字段 [Or ...
- ctfhub技能树—信息泄露—git泄露—index
打开靶机 查看页面信息 使用dirsearch进行扫描 使用githack工具处理git泄露情况 使用git log命令查看历史记录 与 add flag 9b5b58-- 这次提交进行比对 即可拿到 ...
- playwright自动化项目搭建
这是关于playwright系列介绍的最后一篇.搭建基于 playwright 的自动化项目. GitHub地址: https://github.com/defnngj/playwright-pro ...
- Canal:同步mysql增量数据工具,一篇详解核心知识点
老刘是一名即将找工作的研二学生,写博客一方面是总结大数据开发的知识点,一方面是希望能够帮助伙伴让自学从此不求人.由于老刘是自学大数据开发,博客中肯定会存在一些不足,还希望大家能够批评指正,让我们一起进 ...
- 干货!上古神器 sed 教程详解,小白也能看的懂
目录: 介绍工作原理正则表达式基本语法数字定址和正则定址基本子命令实战练习 介绍 熟悉 Linux 的同学一定知道大名鼎鼎的 Linux 三剑客,它们是 grep.awk.sed,我们今天要聊的主角就 ...
- Mysql 中写操作时保驾护航的三兄弟!
这期的文章主要是讲述写操作过程中涉及到的三个日志文件,看过前几期的话可能你或多或少已经有些了解了(或者从别的地方也了解过).比如整个写操作过程中用到的两阶段提交,又或者是操作过程中涉及到的日志文件,但 ...