• Atitit. 懸浮窗口的實現 java swing c# .net c++ js html 的實現

    2016-07-06

    Atitit. 懸浮窗口的實現 java swing c# .net c++ js html 的實現

     

    1. 建立懸浮窗口引用代碼 1

    1.1. 定義懸浮窗口,設置this主窗口引用,是為了在懸浮窗口中雙擊可縮小還還原主窗口.以及懸浮窗口右鍵菜單"顯示主界面"中需要還原主窗 1

    1.2. //設置主窗口關閉時,先關閉懸浮窗口.and系統托盤 1

    1.3. 注入系統托盤圖標,退出的時候兒也退出系統托盤 2

    2. 懸浮窗口結構and重大的點 2

    2.1. 要去掉標題欄: 2

    2.2. Opacity 透明度70% 2

    2.3. 不會在任務欄有圖標 2

    2.4. 設置頂層次窗口 2

    2.5. 3) 要拖動窗體的功能:  只要給窗體中的某個組件添加如下代碼就行了: 3

    2.6. 鼠標移動的時候兒光標狀態更改 3

    2.7. 右鍵彈出菜單 3

    2.8. 雙點擊懸浮窗口可以最大化最小化主要的窗口 3

    3. 各大的語言實現 3

    3.1. Java swing的實現 3

    3.2. C#.net的實現 4

    3.3. C++ qt的實現 4

    3.4. Web html 懸浮窗口的實現 4

    4. 參考 4

     

    1. 建立懸浮窗口引用代碼

    1.1. 定義懸浮窗口,設置this主窗口引用,是為了在懸浮窗口中雙擊可縮小還還原主窗口.以及懸浮窗口右鍵菜單"顯示主界面"中需要還原主窗

     m.floatForm fltfm;
      fltfm = new floatForm(this); //定義懸浮窗口,設置this主窗口引用,是為了在懸浮窗口中雙擊可縮小還還原主窗口.以及懸浮窗口右鍵菜單"顯示主界面"中需要還原主窗口..
      fltfm.Show();  //顯示

    1.2. //設置主窗口關閉時,先關閉懸浮窗口.and系統托盤


                new Exitx().close(this, delegate {           


                    this.fltfm.Close();//關閉懸浮窗口
                    trc4.close();//關閉托盤圖標
                  
                });

     

    1.3. 注入系統托盤圖標,退出的時候兒也退出系統托盤

    作者:: 老哇的爪子 Attilax 艾龍,  EMAIL:1466519819@qq.com

    轉載請注明來源: http://blog.csdn.net/attilax

     

    2. 懸浮窗口結構and重大的點

    2.1. 要去掉標題欄:

    C++ qt 從QWidget 繼承..沒有工具bar, 狀態bar...當然,從QMainWindowi繼承也能了.  setWindowFlags( Qt::FramelessWindowHint

    Swing 是使用jwindow模式 ,或者..jframe.setUndecorated(true); // no titlbar  ,jeig defin in  java.awt.Frame

    2.2. Opacity 透明度70%

       setAttribute(Qt::WA_TranslucentBackground, true);

    jwindow.setOpacity(0.7f); 

    2.3. 不會在任務欄有圖標

    setWindowFlags(    Qt::Tool)   //工具條模式

    Swing 是使用jwindow模式....使用jframe模式還馬行上方法..

    2.4. 設置頂層次窗口

    setWindowFlags(  Qt::WindowStaysOnTopHint 

    Java 是

    jwindow/jframe.setAlwaysOnTop(true);

    2.5. 3) 要拖動窗體的功能: 
    只要給窗體中的某個組件添加如下代碼就行了:

    2.6. 鼠標移動的時候兒光標狀態更改

    2.7. 右鍵彈出菜單

    2.8. 雙點擊懸浮窗口可以最大化最小化主要的窗口

    3. 各大的語言實現

    3.1. Java swing的實現

    Point loc = null;

    Point tmp = null;

    boolean isDragged = false;

    //press move release

    private void setDragable() {

    this.addMouseListener(new java.awt.event.MouseAdapter() {

    public void mousePressed(java.awt.event.MouseEvent e) {

    tmp = new Point(e.getX(), e.getY());

    isDragged = true;

    //jFrame.setCursor(new Cursor(Cursor.MOVE_CURSOR));

    }

    public void mouseReleased(java.awt.event.MouseEvent e) {

    isDragged = false;

    //jFrame.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));

    }

     

    });

    this.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {

    public void mouseDragged(java.awt.event.MouseEvent e) {

    if (isDragged) {

    //jFrame.().x

    int x = jFrame.getBounds().x;

    int y = jFrame.getBounds().y;

    loc = new Point(x + e.getX() - tmp.x,

    y + e.getY() - tmp.y);

    jFrame.setLocation(loc);

    }

    }

    });

    }

    3.2. C#.net的實現

    3.3. C++ qt的實現

    3.4. Web html 懸浮窗口的實現

     

    4. 參考

    Java-如何去掉JFrame上的最大化最小化和關閉按鈕_Linux編程_Linux公社-Linux系統門戶網站.htm

    paip.C#.net 懸浮窗口的建立總結 - attilax的專欄 博客頻道 - CSDN.NET.htm

     

    paip.提升用戶體驗---c++ qt 懸浮窗實現 - attilax的專欄 博客頻道 - CSDN.NET.htm

     


    天堂网