Java 窗口 小马图像窗口
写在前面:
eclipse接着爽到
全是借鉴的,东改西改,而且记不住原网址了
两个月前写的,忘了思路,嗯,It just works
运行效果:
图像随便选(放到*jar所在目录*\\pictures\\)
能选择永远显示在前
窗口能拖动
鼠标滚轮放大缩小
可以隐藏UI
Java代码如下:
1 package ponyimg;
2
3 import java.awt.*;
4 import java.awt.event.ActionEvent;
5 import java.awt.event.ActionListener;
6 import java.awt.event.MouseAdapter;
7 import java.awt.event.MouseEvent;
8 import java.awt.event.MouseMotionAdapter;
9 import java.awt.event.MouseWheelEvent;
10 import java.awt.event.MouseWheelListener;
11 import java.io.*;
12 import javax.swing.ImageIcon;
13 import javax.swing.JButton;
14 import javax.swing.JFileChooser;
15 import javax.swing.JFrame;
16 import javax.swing.JLabel;
17
18 public class PonyIMG extends JFrame
19 {
20 static int minx=192,miny=108;
21 static boolean ishide=false;
22 static int pframexOri,pframeyOri,pframex,pframey,ponyresult;
23 static int ori_pict_x,ori_pict_y,pict_x,pict_y,ponyscale=20;
24 static String ponySname;
25 static ImageIcon ponyimgtmp;
26
27 public static void main(String[] args) throws Exception
28 {
29 JFrame ponyFrame=new JFrame("PonyIMG");
30 File directory = new File("");
31 ponyFrame.setIconImage(Toolkit.getDefaultToolkit().getImage(directory.getCanonicalPath()+"\\icons\\32.png"));
32 ImageIcon ponydefaultimg=new ImageIcon(Toolkit.getDefaultToolkit().getImage(directory.getCanonicalPath()+"\\pictures\\default.png"));
33 ori_pict_x=ponydefaultimg.getIconWidth();
34 ori_pict_y=ponydefaultimg.getIconHeight();
35 JButton ponyb_front = new JButton("");
36 JButton ponyb_exit = new JButton("");
37 JButton ponyb_open = new JButton("");
38 JButton ponyb_hide = new JButton("");
39 ImageIcon ponyb_fronti = new ImageIcon(Toolkit.getDefaultToolkit().getImage(directory.getCanonicalPath()+"\\icons\\front.png"));
40 ImageIcon ponyb_nfronti = new ImageIcon(Toolkit.getDefaultToolkit().getImage(directory.getCanonicalPath()+"\\icons\\nfront.png"));
41 ImageIcon ponyb_exiti = new ImageIcon(Toolkit.getDefaultToolkit().getImage(directory.getCanonicalPath()+"\\icons\\exit.png"));
42 ImageIcon ponyb_openi = new ImageIcon(Toolkit.getDefaultToolkit().getImage(directory.getCanonicalPath()+"\\icons\\open.png"));
43 ImageIcon ponyb_hidei = new ImageIcon(Toolkit.getDefaultToolkit().getImage(directory.getCanonicalPath()+"\\icons\\hide.png"));
44 ImageIcon ponyb_uhidei = new ImageIcon(Toolkit.getDefaultToolkit().getImage(directory.getCanonicalPath()+"\\icons\\uhide.png"));
45 JFileChooser ponychooser = new JFileChooser(directory.getCanonicalPath()+"\\pictures");
46 ponychooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
47 ponychooser.setDialogTitle("Get an image...");
48
49 /*Whole*/
50 ponyFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
51 ponyFrame.setLayout(null);
52 ponyFrame.setResizable(false);
53 ponyFrame.setLocationRelativeTo(null);
54 ponyFrame.setSize(ponydefaultimg.getIconWidth(),ponydefaultimg.getIconHeight());
55 ponyFrame.setUndecorated(true);
56 ponyFrame.setAlwaysOnTop(false);
57 ponyFrame.setBackground(new Color(0,0,0,0));
58
59 /*BUTTON_FRONT*/
60 ponyb_front.setIcon(ponyb_nfronti);
61 ponyb_front.setSize(27, 27);
62 ponyb_front.setLocation(ponydefaultimg.getIconWidth()-64, 5);
63 ponyb_front.addActionListener(new ActionListener(){
64 public void actionPerformed(ActionEvent e)
65 {
66 if(ponyFrame.isAlwaysOnTop()==true)
67 {
68 ponyFrame.setAlwaysOnTop(false);
69 ponyb_front.setIcon(ponyb_nfronti);
70 }
71 else
72 {
73 ponyFrame.setAlwaysOnTop(true);
74 ponyb_front.setIcon(ponyb_fronti);
75 }
76 }
77 });
78 ponyFrame.add(ponyb_front);
79
80 /*BUTTON_EXIT*/
81 ponyb_exit.setIcon(ponyb_exiti);
82 ponyb_exit.setSize(27, 27);
83 ponyb_exit.setLocation(ponydefaultimg.getIconWidth()-32, 5);
84 ponyb_exit.addActionListener(new ActionListener(){
85 public void actionPerformed(ActionEvent e)
86 {
87 System.exit(0);
88 }
89 });
90 ponyFrame.add(ponyb_exit);
91
92 /*BUTTON_OPEN*/
93 ponyb_open.setIcon(ponyb_openi);
94 ponyb_open.setSize(27, 27);
95 ponyb_open.setLocation(5, ponydefaultimg.getIconHeight()-32);
96 ponyFrame.add(ponyb_open);
97
98 /*BUTTON_HIDE*/
99 ponyb_hide.setIcon(ponyb_uhidei);
100 ponyb_hide.setSize(27, 27);
101 ponyb_hide.setLocation(5, 5);
102 ponyb_hide.addActionListener(new ActionListener(){
103 public void actionPerformed(ActionEvent e)
104 {
105 if(ishide==false) {
106 ishide=true;
107 ponyb_hide.setIcon(ponyb_hidei);
108 ponyb_front.setVisible(false);
109 ponyb_exit.setVisible(false);
110 ponyb_open.setVisible(false);
111 }
112 else {
113 ishide=false;
114 ponyb_hide.setIcon(ponyb_uhidei);
115 ponyb_front.setVisible(true);
116 ponyb_exit.setVisible(true);
117 ponyb_open.setVisible(true);
118 }
119
120 }
121 });
122 ponyFrame.add(ponyb_hide);
123
124 /*IMG*/
125 JLabel Label00 = new JLabel(ponydefaultimg);
126 Label00.setSize(ponydefaultimg.getIconWidth(),ponydefaultimg.getIconHeight());
127 ponyFrame.add(Label00);
128
129 /*BUTTON_OPEN*/
130 ponyb_open.addActionListener(new ActionListener(){
131 public void actionPerformed(ActionEvent e)
132 {
133 ponyresult=ponychooser.showOpenDialog(ponyFrame);
134 if(ponychooser.APPROVE_OPTION == ponyresult)
135 {
136 ponySname=ponychooser.getSelectedFile().getPath();
137 ponyimgtmp=new ImageIcon(Toolkit.getDefaultToolkit().getImage(ponySname));
138
139 if(!(ponyimgtmp.getIconWidth()>=minx && ponyimgtmp.getIconHeight()>=miny))
140 {
141 ponyimgtmp=ponydefaultimg;
142 }
143 ori_pict_x=ponyimgtmp.getIconWidth();
144 ori_pict_y=ponyimgtmp.getIconHeight();
145 Label00.setIcon(ponyimgtmp);
146 ponyFrame.setSize(ponyimgtmp.getIconWidth(),ponyimgtmp.getIconHeight());
147 Label00.setSize(ponyimgtmp.getIconWidth(),ponyimgtmp.getIconHeight());
148 ponyb_front.setLocation(ponyimgtmp.getIconWidth()-64, 5);
149 ponyb_exit.setLocation(ponyimgtmp.getIconWidth()-32, 5);
150 ponyb_open.setLocation(5, ponyimgtmp.getIconHeight()-32);
151 ponyscale=20;
152 }
153 }
154 });
155
156 /*MOUSE*/
157 ponyFrame.addMouseListener(new MouseAdapter() {
158 @Override
159 public void mousePressed(MouseEvent e) {
160 pframexOri=e.getX();
161 pframeyOri=e.getY();
162 }
163 });
164 ponyFrame.addMouseMotionListener(new MouseMotionAdapter() {
165 @Override
166 public void mouseDragged(MouseEvent e) {
167 ponyFrame.setLocation(e.getXOnScreen()-pframexOri,e.getYOnScreen()-pframeyOri);
168 }
169 });
170 ponyFrame.addMouseWheelListener(new MouseWheelListener() {
171 @Override
172 public void mouseWheelMoved(MouseWheelEvent e) {
173 if(e.getWheelRotation()==-1){
174 if(ponyscale<=19) {
175 ++ponyscale;
176 pict_x=(ori_pict_x/20)*ponyscale;
177 pict_y=(ori_pict_y/20)*ponyscale;
178 if(ponyscale==20) {
179 pict_x=ori_pict_x;
180 pict_y=ori_pict_y;
181 }
182 ImageIcon ponytmp=new ImageIcon(ponyimgtmp.getImage().getScaledInstance(pict_x, pict_y, Image.SCALE_DEFAULT));
183 Label00.setIcon(ponytmp);
184 ponyFrame.setSize(pict_x,pict_y);
185 Label00.setSize(pict_x,pict_y);
186 ponyb_front.setLocation(pict_x-64, 5);
187 ponyb_exit.setLocation(pict_x-32, 5);
188 ponyb_open.setLocation(5, pict_y-32);
189 }
190 }
191 if(e.getWheelRotation()==1){
192 if(ponyscale>=1 && ((ori_pict_x/20)*(ponyscale-1)>=minx) && ((ori_pict_y/20)*(ponyscale-1)>=miny)) {
193 --ponyscale;
194 pict_x=(ori_pict_x/20)*ponyscale;
195 pict_y=(ori_pict_y/20)*ponyscale;
196 ImageIcon ponytmp=new ImageIcon(ponyimgtmp.getImage().getScaledInstance(pict_x, pict_y, Image.SCALE_DEFAULT));
197 Label00.setIcon(ponytmp);
198 ponyFrame.setSize(pict_x,pict_y);
199 Label00.setSize(pict_x,pict_y);
200 ponyb_front.setLocation(pict_x-64, 5);
201 ponyb_exit.setLocation(pict_x-32, 5);
202 ponyb_open.setLocation(5, pict_y-32);
203 }
204 }
205 }
206 });
207
208 ponyFrame.setVisible(true);
209 }
210 }
没注释,摸了
附件:
*jar所在目录*\\icons\\
32.png
exit.png
front.png
hide.png
nfront.png
open.png
uhide.png
*jar所在目录*\\pictures\\
default.png
Java 窗口 小马图像窗口的更多相关文章
- Java 窗口 小马时钟
写在前面: eclipse爽到 好多都是抄的,记不住原网址了 摸爆了 搞了一个无边框JFrame,给JFrame加入鼠标监听器实现了拖动 搞了按钮,可以关闭.最小化.始终显示在前.静音 icon是抄( ...
- 框架一般用作Java应用程序的窗口,而Applet是Java小程序的窗口
框架一般用作Java应用程序的窗口,而Applet是Java小程序的窗口. 与Frame不同,Applet是在网页中显示的,也可以通过添加Panel进行组件布局. package TomAwt; im ...
- 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的 ...
- Android Widget(窗口小部件)
Android Widget简介 应用程序窗口小部件(Widget)是微型的应用程序视图,它可以被嵌入到其它应用程序中(比如桌面)并接收周期性的更新.你可以通过一个App Widget Provide ...
随机推荐
- java中如何踢人下线?封禁某个账号后使其会话立即掉线!
需求场景 封禁账号是一个比较常见的业务需求,尤其是在论坛.社区类型的项目中,当出现了违规用户时我们需要将其账号立即封禁. 常规的设计思路是:在设计用户表时增加一个状态字段,例如:status,其值为1 ...
- mysql—make_set函数
使用格式:MAKE_SET(bits,str1,str2,-) 1 返回一个设定值(含子字符串分隔字符串","字符),在设置位的相应位的字符串.str1对应于位0,str2到第1位 ...
- Nginx基础环境搭建
1.下载docker toolbox https://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/ 2.选择好安装目录 一路nex ...
- 二本学生拿到腾讯大厂offer的成长记录
本人迈莫,是在20年以春招实习生的身份进入鹅厂,经过重重波折,最终成为鹅仔一份子.接下来我会以我亲生经历为例,分享一下普通大学的学生也是可以进去大厂,拭目以待!!! 初入大学 惨遭毒打 时间倒回到17 ...
- 常用的hadoop和yarn的端口总结
节点 默认端口 用途说明 HDFS DataNode 50010 datanode服务端口,用于数据传输 50075 http服务的端口 50475 https服务的端口 50020 ipc服务的端口 ...
- class CacheMiddleware(UpdateCacheMiddleware, FetchFromCacheMiddleware):
class CacheMiddleware(UpdateCacheMiddleware, FetchFromCacheMiddleware):
- 学习Python之路
陆续学习python已经有一段时间了,但是真正的安下心来学习还是在最近的一个月时间里,虽然每天学习的时间很有限,但是通过点滴的学习让自己感到从未有过的充实,完全打掉了以往认学学习一门语言难于登天的心理 ...
- 龙芯fedora28日常生存指南
2021-01-30 v0.0.5 从0.0.1开始改了非常多,一月余时间的花费渴望为其他人提供一点帮助,能够快速上手. 这主要是这一年来我从3B1500到3A4000再到福珑2的日常使用记录,是之前 ...
- SpringMVC听课笔记(十四:异常处理)
1. SpringMVC通过HandlerExceptionResolver处理程序的异常,包括Handler映射,数据绑定以及目标方法执行时发生的异常 2.SpringMVC提供的HandlerEx ...
- CSS中一些重要概念
在CSS的最后一个博客中,将学习整理一些CSS中的重要概念,对这些重要概念的掌握,将对CSS的认识十分重要. 了解这些概念对深入理解CSS的本质十分重要:(1)包含块containing block ...