关于Swing的一些简单小技巧总结

通过重绘JPanel 添加背景图片: (GIf用这个也可以很好的显示)

final ImageIcon imageIcon = new ImageIcon("src/test.gif");

imageIcon.setImage(imageIcon.getImage().getScaledInstance(CHATFRAME_WIDTH,HEIGHT, Image.SCALE_DEFAULT));
        JPanel aPanel = new JPanel() {
            Image image = imageIcon.getImage();
            Image grayImage = GrayFilter.createDisabledImage(image);
            {
                setOpaque(false);
            }
            public void paint(Graphics g) {
                g.drawImage(imageIcon.getImage(), 0, 0,CHATFRAME_WIDTH,HEIGHT, this);
                super.paint(g);
            }
        };
这里要把所有的组件    setOpaque(false)(透明)

实现图标的缩放
imageIcon.setImage(icon.getImage().getScaledInstance(40,40, Image.SCALE_DEFAULT));

用自己想要的图作为按钮

ImageIcon closeIcon = new ImageIcon("src/2.png");
        JButton closeBtn = new JButton(closeIcon);
        closeBtn.setContentAreaFilled(false);//JButton仅显示图片icon的透明
        closeBtn.setBorderPainted(false);
        closeBtn.setBounds(605,0,40,40);
        closeBtn.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {        
                System.exit(-1);
            }
        }); 
播放音乐(这个方法要把JVM预编译下的一个Error改成Warning才可以运行)

public class MusicPlay {
    AudioStream as;
    public void playMusic(){
        try {        FileInputStream fileau=new FileInputStream("music/消息.wav" );        
        as=new AudioStream(fileau);        
        AudioPlayer.player.start(as);    
        }
        catch (Exception e){        e.printStackTrace();    }
    }
}

添加窗口可被鼠标拖动的监听器(要在setVisible(true)之前加,否则失效)

        setUndecorated(true);(取消Frame 的基本装饰)

    addMouseListener(new MouseAdapter() {
            public void mousePressed(MouseEvent e) {
                xOld = e.getX();//记录鼠标按下时的坐标
                yOld = e.getY();
            }
            });
        addMouseMotionListener(new MouseMotionAdapter() {
            public void mouseDragged(MouseEvent e) {
                int xOnScreen = e.getXOnScreen();
                int yOnScreen = e.getYOnScreen();
                int xx = xOnScreen - xOld;
                int yy = yOnScreen - yOld;
                setLocation(xx, yy);//设置拖拽后,窗口的位置
            }
        });

截屏功能(只能全屏)

public class CaptureScreen {
    //截图 并保存
    public static void CaptureScreen(String folder,String fileName)throws Exception{
        //获得屏幕大小并创建一个Rectangle(区域)
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        Rectangle screenRectangle = new Rectangle(screenSize);
        //创建包含从屏幕中读取的像素的图像
        Robot robot = new Robot();
        BufferedImage image = robot.createScreenCapture(screenRectangle);
        //保存路径
        File screenFile = new File(folder);
        if(!screenFile.exists()) {
            screenFile.mkdir();
        }
        File f = new File(screenFile,fileName);
        //决定了f为文件,将图像1以.png格式写入文件f
        ImageIO.write(image, "png", f);
        if(Desktop.isDesktopSupported()&&Desktop.getDesktop().isSupported(Desktop.Action.OPEN)) {
            Desktop.getDesktop().open(f);
        }
    }
    public static void main(String[] args) {
        try {
            CaptureScreen("hello","11.png");
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}

获取本地视频播放器播放本地视频 

public class shipin {
    
     //打开本地播放器并播放视频 音频 
    public static  void openExe(String file) {  
        
        try 
        { 
            Runtime.getRuntime().exec("\"C:/Program Files (x86)/Windows Media Player/wmplayer.exe\""+file);  
            
        } catch (Exception e)
        {  
            System.out.println("Error!");  
        }  
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值