第三个(不太残废)的程序
写在前面:
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