悬浮窗java_Java制作一个简易的悬浮窗/PPT悬浮窗
電腦日常使用過程中,我們常常可以看到許多軟件有懸浮窗,方便快捷,甚至有的還可以在PPT里面使用。這是怎么實現的呢?今天我就來分享一下Java制作一個簡單懸浮窗的方法,可以在PPT里面使用。
運行效果:
其實懸浮窗制作很簡單,最重要的一點就是需要它總在最前顯示,只需要使用JFrame類里面的一個方法即可實現;然后就是要去掉窗口邊框,并設置窗口透明方便后面添加我們的貼圖,自定義窗口形狀等等。
代碼如下:JFrame jf=new JFrame(); //先實例化一個窗口對象
jf.setUndecorated(true);//窗口去邊框
jf.setAlwaysOnTop(true);//設置窗口總在最前
jf.setBackground(new Color(0,0,0,0));//設置窗口背景為透明色
去掉邊框的窗口無法移動,我們要通過如下代碼實現窗口拖動:
先在當前類里面創建兩個整型全局變量分別作為我們鼠標所在位置的x,y坐標:static int mouseAtX;
static int mouseAtY;
再通過添加窗口監聽器的方法,監聽鼠標按住窗口時的位置等,來實現拖動窗口:jf.addMouseListener(new MouseAdapter() //設置窗口可拖動
{
public void mousePressed(MouseEvent e)
{
mouseAtX = e.getPoint().x;
mouseAtY= e.getPoint().y;
}
});
jf.addMouseMotionListener(new MouseMotionAdapter()
{
public void mouseDragged(MouseEvent e)
{
jf.setLocation((e.getXOnScreen()-mouseAtX),(e.getYOnScreen()-mouseAtY));//設置拖拽后,窗口的位置
}
});
然后添加我們的貼圖,按鈕和主題,最好是背景透明的png格式圖片,這樣可以達到自定義你的懸浮窗外表的效果(因為窗口背景已經被設置成透明了,邊框也去掉了):
示例圖片:
//按鈕1
ImageIcon run=new ImageIcon("res\\button\\pptrun.png");//實例化圖像對象以作為按鈕貼圖
JButton PPTrun=new JButton(run);//將上面的圖像對象設置為按鈕貼圖
PPTrun.setContentAreaFilled(false);//設置按鈕背景透明
PPTrun.setBorderPainted(false);//去掉按鈕邊框
PPTrun.setBounds(8, 311, 130, 58);//設置按鈕大小及位置
//按鈕2
ImageIcon back=new ImageIcon("res\\button\\pptback.png");//實例化圖像對象以作為按鈕貼圖
JButton PPTback=new JButton(back);//將上面的圖像對象設置為按鈕貼圖
PPTback.setContentAreaFilled(false);//設置按鈕背景透明
PPTback.setBorderPainted(false);//去掉按鈕邊框
PPTback.setBounds(8, 373, 130, 58);
//按鈕3
ImageIcon exit=new ImageIcon("res\\button\\pptexit.png");//實例化圖像對象以作為按鈕貼圖
JButton PPTexit=new JButton(exit);//將上面的圖像對象設置為按鈕貼圖
PPTexit.setContentAreaFilled(false);//設置按鈕背景透明
PPTexit.setBorderPainted(false);//去掉按鈕邊框
PPTexit.setBounds(8, 432, 130, 58);//設置按鈕大小及位置
ImageIcon c=new ImageIcon("res\\character\\1.png");//實例化圖像對象以作為窗口主題貼圖
JLabel l=new JLabel(c);//把上面的主題貼圖添加到標簽對象里面去
l.setBounds(0, 136, 144, 177);//設置標簽對象大小及位置
當然,在這里有一點很重要 ,那就是setBounds()方法的使用。
這個方法是用于設置組件在窗口里面的位置及大小的方法。
這個方法在swing里面的所有組件都適用(JButton按鈕,JLabel標簽,JTextField輸入框等等),上面的代碼也有,用法如下:object.setBounds(x坐標,y坐標,組件寬,組件高);
這里object是我們創建的對象(如JButton按鈕,JLabel標簽,JTextField輸入框等等),x、y坐標都是相對于窗口內部的坐標,(0,0)在窗口的最左上方,組件寬、高的單位都為像素。在創建帶有圖片的JLabel對象或JButton按鈕對象時,尤其要注意把JLabel或JButton的寬、高設置得與圖片一致,否則圖片無法顯示完全,像我這里圖片大小為:144x177
因此在上面可以看到我的JLabel對象setBounds里面的寬和高分別是144和177。
不過手動輸入數據并一次次調試是很難的,我這里使用了WindowBuilder插件,在里面拖動組件即可方便地設置組件位置,也會生成對應代碼。不過還是要注意最好后面手動將寬高改的和圖片一致。
使用windowbuilder插件里面的Absolute layout布局應用到窗口即可,這里不再過多贅述插件使用方法,請自行百度。
最后使用JPanel面板對象規整我們的各個組件再添加到窗口里面:JPanel p=new JPanel();
p.setLayout(null);
//添加各個組件
p.add(l);
p.add(PPTrun);
p.add(PPTback);
p.add(PPTexit);
p.setOpaque(false); //設置面板對象背景透明
jf.getContentPane().add(p); //把面板對象添加到窗口里面
jf.show(); //顯示窗口
記得JPanel也要設置背景透明!
這樣我們的懸浮窗就做好了,還可以在PPT里面顯示!
完整代碼如下:import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class FloatWindow{
static int mouseAtX;
static int mouseAtY;
public static void main(String[] args) {
Toolkit kit=Toolkit.getDefaultToolkit();
Dimension sc=kit.getScreenSize();
JFrame jf=new JFrame();
jf.setSize(145,500);
jf.setLocation(sc.width/45,sc.height/9);
jf.setUndecorated(true);//窗口去邊框
jf.setAlwaysOnTop(true);//設置窗口總在最前
jf.setBackground(new Color(0,0,0,0));//設置窗口背景為透明色
jf.addMouseListener(new MouseAdapter() //設置窗口可拖動
{
public void mousePressed(MouseEvent e)
{
mouseAtX = e.getPoint().x;
mouseAtY= e.getPoint().y;
}
});
jf.addMouseMotionListener(new MouseMotionAdapter()
{
public void mouseDragged(MouseEvent e)
{
jf.setLocation((e.getXOnScreen()-mouseAtX),(e.getYOnScreen()-mouseAtY));//設置拖拽后,窗口的位置
}
});
//按鈕1
ImageIcon run=new ImageIcon("res\\button\\pptrun.png");//實例化圖像對象以作為按鈕貼圖
JButton PPTrun=new JButton(run);//將上面的圖像對象設置為按鈕貼圖
PPTrun.setContentAreaFilled(false);//設置按鈕背景透明
PPTrun.setBorderPainted(false);//去掉按鈕邊框
PPTrun.setBounds(8, 311, 130, 58);//設置按鈕大小及位置
//按鈕2
ImageIcon back=new ImageIcon("res\\button\\pptback.png");//實例化圖像對象以作為按鈕貼圖
JButton PPTback=new JButton(back);//將上面的圖像對象設置為按鈕貼圖
PPTback.setContentAreaFilled(false);//設置按鈕背景透明
PPTback.setBorderPainted(false);//去掉按鈕邊框
PPTback.setBounds(8, 373, 130, 58);
//按鈕3
ImageIcon exit=new ImageIcon("res\\button\\pptexit.png");//實例化圖像對象以作為按鈕貼圖
JButton PPTexit=new JButton(exit);//將上面的圖像對象設置為按鈕貼圖
PPTexit.setContentAreaFilled(false);//設置按鈕背景透明
PPTexit.setBorderPainted(false);//去掉按鈕邊框
PPTexit.setBounds(8, 432, 130, 58);//設置按鈕大小及位置
ImageIcon c=new ImageIcon("res\\character\\1.png");//實例化圖像對象以作為窗口主題貼圖
JLabel l=new JLabel(c);//把上面的主題貼圖添加到標簽對象里面去
l.setBounds(0, 136, 144, 177);//設置標簽對象大小及位置
JPanel p=new JPanel();
p.setLayout(null);
p.add(l);
p.add(PPTrun);
p.add(PPTback);
p.add(PPTexit);
p.setOpaque(false);
jf.getContentPane().add(p);
jf.show();
}
}
本教程到這里就結束了,感謝大家觀看!
總結
以上是生活随笔為你收集整理的悬浮窗java_Java制作一个简易的悬浮窗/PPT悬浮窗的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MATLAB基础教程(9)——高级积分运
- 下一篇: java美元兑换,(Java实现) 美元