博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Atitit. 悬浮窗口的实现 java swing c# .net c++ js html 的实现
阅读量:6160 次
发布时间:2019-06-21

本文共 2169 字,大约阅读时间需要 7 分钟。

Atitit. 悬浮窗口的实现 java swing c# .net c++ js html 的实现

 

 

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

 

你可能感兴趣的文章
进程的基本属性:进程ID、父进程ID、进程组ID、会话和控制终端
查看>>
spring+jotm+ibatis+mysql实现JTA分布式事务
查看>>
MyBatis启动:MapperStatement创建
查看>>
调查问卷相关
查看>>
eclipse启动无响应,老是加载不了revert resources,或停留在Loading workbench状态
查看>>
1. Git-2.12.0-64-bit .exe下载
查看>>
怎样关闭“粘滞键”?
查看>>
[转]React 教程
查看>>
拓扑排序介绍
查看>>
eclipse打开工作空间(workspace)没有任务反应
查看>>
使用Sybmol模块来构建神经网络
查看>>
字符串去分割符号
查看>>
WPF中,多key值绑定问题,一个key绑定一个界面上的对象
查看>>
UML类图简明教程
查看>>
java反编译工具(Java Decompiler)
查看>>
Android开发之自定义对话框
查看>>
微信Access Token 缓存方法
查看>>
Eclipsed的SVN插件不能识别之前工作空间的项目
查看>>
Linux 查看iptables状态-重启
查看>>
amazeui学习笔记一(开始使用2)--布局示例layouts
查看>>