写在前面:

  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 窗口 小马时钟的更多相关文章

  1. Java 窗口 小马图像窗口

    写在前面: eclipse接着爽到 全是借鉴的,东改西改,而且记不住原网址了 两个月前写的,忘了思路,嗯,It just works 运行效果: 图像随便选(放到*jar所在目录*\\pictures ...

  2. Android开发5:应用程序窗口小部件App Widgets的实现

    前言 本次主要是实现一个Android应用,实现静态广播.动态广播两种改变 widget内容的方法,即在上篇博文中实验的基础上进行修改,所以此次实验的重点是AppWidget小部件的实现啦~ 首先,我 ...

  3. 在android程序中加入widget(窗口小部件)并与之交互的关键代码

    摘要: widget(窗口小部件)可以增强应用程序的交互性, 是很多应用中都会用到的功能,本文不求大而全,但是会给出程序与widget交互的关键代码 正文: 其实widget是嵌入(embedded) ...

  4. Android 之窗口小部件详解--App Widget

    Android 之窗口小部件详解--App Widget  版本号 说明 作者 日期  1.0  添加App Widge介绍和示例  Sky Wang 2013/06/27        1 App ...

  5. Android 之窗口小部件详解(三)  部分转载

    原文地址:http://blog.csdn.net/iefreer/article/details/4626274. (一) 应用程序窗口小部件App Widgets 应用程序窗口小部件(Widget ...

  6. Android 之窗口小部件高级篇--App Widget 之 RemoteViews - 跨到对岸去

    在之前的一篇博文( Android 之窗口小部件详解--App Widge t)中,已经介绍了App Widget的基本用法和简单实例.这篇主要讲解 App Widget 的高级内容,即通过 Remo ...

  7. Android 之窗口小部件高级篇--App Widget 之 RemoteViews

    Android 之窗口小部件高级篇--App Widget 之 RemoteViews 在之前的一篇博文(Android 之窗口小部件详解--App Widget)中,已经介绍了App Widget的 ...

  8. Xamarin Forms:小马过河,王者归来

    因为我媳妇的原因,去年下半年从零开始学习Android原生开发,做了一个答题库app.整体给我的感觉是入门难度不大,前期折腾一番,大部分时间都是花在开发上面,其实任何一门语言都是如此. 今年我又有另一 ...

  9. Java太阳系小游戏分析和源代码

    Java太阳系小游戏分析和源代码 -20150809 近期看了面向对象的一些知识.然后跟着老师的解说做了一个太阳系各行星绕太阳转的小游戏,来练习巩固一下近期学的知识: 用到知识点:类的继承.方法的重载 ...

随机推荐

  1. Java Mybatis快速入门之基本使用

    目录 搭建环境 编写 Mybatis 核心配置文件 pom导出资源失败 测试 搭建环境 新建Maven项目 导入Maven依赖 <dependencies> <!--mysql驱动- ...

  2. mysql中更改字段属性实际上都做了哪些操作

     mysql> set profiling=1; Query OK, 0 rows affected (0.00 sec) mysql> alter table test modify n ...

  3. xtrabackup不完全恢复

    例如,在2014年6月26日下午14:00的时候有人误操作drop掉了一张表,由于库不是很大,并且为测试库,并没有访问,这个时候,我们可以进行基于位置和时间点的不完全恢复 先找到早上的备份,查看那xt ...

  4. LeetCode938. 二叉搜索树的范围和

    题目 1 class Solution { 2 public: 3 int sum = 0; 4 int rangeSumBST(TreeNode* root, int low, int high) ...

  5. SSRF - Pikachu

    概述: SSRF(Server-Side Request Forgery:服务器端请求伪造) 其形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能,但又没有对目标地址做严格过滤与限制 导致 ...

  6. 18V转5V,18V转3.3V,18V转3V稳压芯片,0.01A-3A输出

    18V转5V,18V转3.3V,18V转3V, 18V转5V稳压芯片,18V转3.3V稳压芯片,18V转3V稳压芯片, 18V常降压转成5V电压,3.3V电压和3V电压给其他芯片或设备供电,适用于这个 ...

  7. Ajax函数的封装

    Ajax函数的封装 function ajax(options) { // 1 创建Ajax对象 let xhr = new XMLHttpRequest(); // 2 告诉Ajax对象要想哪儿发送 ...

  8. git的使用学习笔记3---关于项目分支创建克隆拉取推送

    一.创建项目 1.打开官网 2.填写相关内容 查看新创建的项目 3.选择方式 4.在git上新建文件夹 1)克隆: mkdir workspace 将代码克隆到本地,取本地配置的.ssh的文件 git ...

  9. css水平、垂直居中的写法

    水平居中 行内元素: text-align: center 块级元素: margin: 0 auto position:absolute +left:50%+ transform:translateX ...

  10. 剖析 CopyOnWriteArrayList

    原文链接:https://www.changxuan.top/?p=1252 CopyOnWriteArrayList 是 JUC 中唯一一个支持并发的 List. CopyOnWriteArrayL ...