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 ...
随机推荐
- H5手机网页元素识别
- 腾讯QQ,人人都是高手
今天,腾讯果然给出了官方回应,具体表述如下: 可能你看不太懂,其实我也看的不太懂,不过这就是公关的能力体现,就像我"人人都是高手"的大连车务组微机室小编一样,把一个降级flash描 ...
- Spring Boot 2.x基础教程:配置元数据的应用
在使用Spring Boot开发应用的时候,你是否有发现这样的情况:自定义属性是有高量背景的,鼠标放上去,有一个Cannot resolve configuration property的配置警告. ...
- C# 请求被中止: 未能创建 SSL/TLS 安全通道。 设置SecurityProtocol无效
今天为了获取一张图片,用了一段代码: ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateV ...
- CS_WHERE_USED_MAT 反查BOM的成品CS15
可能很多人都用过BOM展开的函数,但是有的时候,需要通过组件去反查BOM的成品,而这时候就需要用到函数 CS_WHERE_USED_MAT来实现,而对于CS_WHERE_USED_MAT只能反查到上一 ...
- Android事件分发机制二:viewGroup与view对事件的处理
前言 很高兴遇见你~ 在上一篇文章 Android事件分发机制一:事件是如何到达activity的? 中,我们讨论了触摸信息从屏幕产生到发送给具体 的view处理的整体流程,这里先来简单回顾一下: 触 ...
- Scrapy——將爬取圖片下載到本地
1. Spider程序: 1 import scrapy, json 2 from UnsplashImageSpider.items import ImageItem 3 4 class Unspl ...
- java虚拟机入门(三)- 你了解对象吗
对象对于java程序员来说,那是想要多少就有多少,所以那些嘲笑程序员的单身狗,哼,只有无知使你们快乐,想我大java开发,何曾缺少过对象.我们不仅仅知道创建对象,还知道创建对象的过程是啥样的,不信?往 ...
- Linux网卡没有eth0显示ens33原因以及解决办法
原因 首先说明下eth0与ens33的关系: 目前的主流网卡为使用以太网络协定所开发出来的以太网卡 (Ethernet),因此我们 Linux 就称呼这种网络接口为 ethN (N 为数字). 举例来 ...
- 树莓派zero 使用usb串口连接
使用minicom连接bash$ lsusbBus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hubBus 001 Device 0 ...