• 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

    
    
  • 相关阅读:
    VM启用ISO共享
    部署服务--NLB
    SCVMM问题汇总
    判断文件是否存在(exist)
    函数(Function)作用域 / 远程函数执行
    基于433MHz无线串口,多发一收解决方案
    ZigBee自组网地址分配与路由协议概述
    Zigbee协议栈--Z-Stack的使用
    RT-Thread RTOS
    信息量、互斥信息量和事件标志
  • 原文地址:https://www.cnblogs.com/Antigonae/p/12659972.html
Copyright © 2020-2023  润新知