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.jpg02.jpg03.jpgbg.pngkisses.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 近期看了面向对象的一些知识.然后跟着老师的解说做了一个太阳系各行星绕太阳转的小游戏,来练习巩固一下近期学的知识: 用到知识点:类的继承.方法的重载 ...
随机推荐
- LeetCode 二分查找模板 II
模板 #2: int binarySearch(vector<int>& nums, int target){ if(nums.size() == 0) return -1; in ...
- Linux调整lvm逻辑分区大小
转载自:https://www.cnblogs.com/kevingrace/p/5825963.html 个人记录一下 Linux下对lvm逻辑卷分区大小的调整(针对xfs和ext4不同文件系 ...
- Java虚拟机常用的性能监控工具
基础故障处理工具 jps: 虚拟机进程状况工具 功能:来处正在运行的虚拟机进程,并显示虚拟机执行主类名称,以及本地虚拟机唯一ID. 它是使用频率最高的命令行工具,因为其他JDK工具大多需要输入他查询到 ...
- windows打包脚本出现 /bin/sh^M: 坏的解释器: 没有那个文件或目录 错误
1.错误描述 我在Windows 10 系统下打包dolphinscheduler,上传到centos7解压之后,执行脚本报如下错误: -bash: ./dolphinscheduler-daemon ...
- 一文带你学会AQS和并发工具类的关系2
1.创建公平锁 1.使用方式 Lock reentrantLock = new ReentrantLock(true); reentrantLock.lock(); //加锁 try{ // todo ...
- 【Oracle】row_number() over(partition by )函数用法
row_number() OVER (PARTITION BY COL1 ORDER BY COL2) 表示根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后的顺序编 ...
- ctfhub技能树—文件上传—MIME绕过
什么是MIME MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型.是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访 ...
- 记录一下 ThreadLocal 与 WeakReference
ThreadLocal & WeakReference Thread整体的模块图 Thread -> ThreadLocalMap 对于继承了 WeakReference Entry本身 ...
- 1.2V转3.3V芯片电路图,超简电路
镍氢可充电电池1.2V转成3.3V的电路和电子产品很多,在实际适用中,即使是两节镍氢电池串联供电也是会有供电电压下降和不稳定的影响,这是因为电池电量减少,而导致电池的电压也是会随着降低. 一般情况下, ...
- 安装jdk-windows系统
1. 明确需要安装的jdk版本,注意jdk存在小版本号,例如jdk1.7_51,如果不清楚小版本号的话建议安装最新版本的jdk: 2. 打开cmd命令窗口,输入java -version查看本机是否安 ...