博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
nwjs node-webkit 桌面app自定义窗体事件 nwjs托盘tray的实现
阅读量:3948 次
发布时间:2019-05-24

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

                       

自定义窗体按钮及事件绑定

假设我们在配置app的时候去掉了默认的窗体外框及事件并且打算自己定制,那么我们首先要在应用页面通过html布局各个窗体按钮,假设我们通过以下的代码自定义了窗体最小化、最大化、后台运行按钮

   
1
2
3
4
5
6
7

这里写图片描述

然后我们定义了相关按钮的点击事件:

#使应用最小化到托盘function backgroudApp(gui){
    win.hide();}#使应用最小化到任务栏function minimizeApp(gui){
    win.on('minimize', function () {
      win.removeAllListeners('minimize');       });    win.minimize();}#最大化应用function expendApp(gui){
    win.on('maximize', function () {
       win.removeAllListeners('maximize');         });    win.maximize();}#toggle窗体最小化和最大化function unexpendApp(gui){
    win.on('restore', function () {
            win.removeAllListeners('restore');              });    win.restore();}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

接下来我们需要在应用初始化时为自定义按钮绑定上述事件 (通过jQuery绑定)

#首先加载gui模块并且获得窗体组件var gui = require('nw.gui');var win = gui.Window.get();#定义立即执行的匿名函数(function(){
    #窗体展现    win.show();    #托盘事件    showTray(gui);    var ismaxmize = true;    #通过函数表达式定义函数    var windowEvent = function() {
        #为关闭按钮绑定事件        $("#close-btn").click(function() {
            closeApp();        });        #为最小化按钮绑定事件        $("#min-btn").click(function() {
            minimizeApp(gui);        });        #最大化按钮的事件绑定以及toggle绑定        $("#max-btn").click(function() {
            if (ismaxmize) {                expendApp(gui);                ismaxmize = false;            } else {                unexpendApp(gui);                ismaxmize = true;            }        });    }    windowEvent();    #函数调用    })
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

应用的托盘事件以及托盘操作设置

function showTray(gui){
    #获取应用目录     dirname = require('./util').dirname;     #获取托盘图片位置     var path_ = pathModule.join(dirname, 'images/halo.png');     #创建托盘     tray = new gui.Tray({title: 'halo', icon:path_ });     tray.tooltip = 'halo';     //添加一个菜单         var menu = new gui.Menu();     menu.append(new gui.MenuItem({label: ' 退     出', icon:path_,}));     tray.menu = menu;      #托盘点击事件     tray.on('click', function() {
         win.show();     });     win.on('close', function (event) {
     });     tray.menu.items[0].click = function() {
        win.hide();        #在这一部分可以添加应用的终结执行命令        tray.remove();        tray = null;        win.removeAllListeners('close');        gui.App.quit();         this.close(true);     };  }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
           

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!

你可能感兴趣的文章
执行程序(例如UltraEdit)在WIN7下添加到右键菜单
查看>>
flash and root your Nexus10
查看>>
深入学习Make命令和Makefile(上)(2)
查看>>
深入学习Make命令和Makefile(下)(2)
查看>>
示波器基础系列之四——关于示波器的触发功能(下篇)
查看>>
10大玄机为你揭开炒土豆丝爽脆的秘密——尖椒土豆丝
查看>>
grep与正则表达式
查看>>
git patch 使用
查看>>
如何进行Linux Kernel 开发
查看>>
技术人攻略访谈二十九:平行世界守护者
查看>>
制作initramfs/initrd镜像
查看>>
浅析busybox查找命令和调用相应命令函数的实现流程框架
查看>>
利用linux dd和tr命令生成特定的数据
查看>>
Fundamentals of battery fuel-gauging
查看>>
armlinux内核启动--内存初始化管理
查看>>
rk3188--4.android用initrd文件系统启动流程
查看>>
rk3188--3.initramfs_data.cpio的生成及使用
查看>>
使用QEMU模拟器运行Linux kernel
查看>>
Android init.rc文件解析过程详解(一)
查看>>
[原创]Android init.rc文件解析过程详解(二)
查看>>