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