`
Arizona
  • 浏览: 32260 次
  • 性别: Icon_minigender_2
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

Disable TreeItem with SWT.CHECK

 
阅读更多

      这几天做项目,遇到一个问题:希望能使checkbox tree的某个节点不可编辑。查了一些资料发现,TreeItem本身不具备这个功能,因此只能自己写代码来实现不可编辑的效果

      实现的方法有很多,下面介绍一下我使用的方法

      (1)实现checkbox的不可编辑:当监听到check事件时,将checkbox的选中状态置为当前状态的相反状态。这句话是不是有点绕,看看下面的代码就明白了

final Tree tree = new Tree(parent,SWT.BORDER|SWT.V_SCROLL|SWT.H_SCROLL);
// Attach a listener directly after the creation
tree.addListener(SWT.Selection,new Listener() {
   public void handleEvent(Event event) {
       if( event.detail == SWT.CHECK ) {
              event.detail = SWT.NONE;
              event.type   = SWT.None;
              event.doIt   = false;
              try {
                 tree.setRedraw(false);
                 TreeItem item = (TreeItem)tree.item;
                 item.setChecked(! item.getChecked() );
              } finally {
                 tree.setRedraw(true);
              }
       }
   }
});

     (2)在外观上实现节点灰化:这个比较简单,用TreeItem的setForeground()/setBackground()方法即可

     这样实现唯一的一个缺点是checkbox虽然不可编辑了,但是不会灰化

 

分享到:
评论

相关推荐

    CISCO交换机出现err-disable分析和解决.pdf

    ### CISCO交换机err-disable状态解析与应对策略 在企业级网络环境中,CISCO交换机作为数据传输的核心设备,其稳定运行至关重要。然而,当交换机接口状态变为“err-disable”时,网络通信将受到严重影响,甚至导致...

    ulps_enable_disable.zip

    标题 "ulps_enable_disable.zip" 暗示了这是一个与启用或禁用ULPS相关的软件配置包。ULPS,全称Ultra Low Power State(超低功耗状态),是计算机硬件,特别是显卡中的一种节能技术。它允许设备在不活动时进入一种极...

    Simple.Disable.Key.rar

    《Simple.Disable.Key:探索键盘热键自定义的奥秘》 在当今信息化社会,键盘作为计算机的主要输入设备,其快捷键的运用极大地提升了工作效率。然而,有些键盘热键可能会与用户的需求或软件冲突,导致不便。这时,一...

    华为以太网交换机vlan disable的功能和配置.doc

    【华为以太网交换机VLAN Disable功能和配置】 在华为的以太网交换机中,VLAN Disable是一项重要的配置选项,它允许用户在特定情况下禁用VLAN功能,以应对一些特殊的网络需求。VLAN(虚拟局域网)通常用于在网络中...

    adb,支持adb disable-verity命令,解锁system分区

    6. 输入`fastboot oem disable-verity`或`adb disable-verity`(取决于具体adb版本),执行解除verity检查的操作。 7. 完成后,执行`fastboot reboot`重启设备,设备会启动到系统,此时verity已被禁用。 需要注意的...

    system-properties:生成包含有关Android系统属性信息的JSON

    config.disable_bluetooth config.disable_location config.disable_media config.disable_network config.disable_networktime config.disable_noncore config.disable_render脚本 config.disable_storage 如果...

    How to disable_enable a timing check in a design.pdf

    后仿

    JONES_Disable_Suspend.exe

    WIN10R触摸屏驱动程序_1,JONES_Disable_Suspend,其中一个软件

    adb带disable-verity.zip

    这个“adb带disable-verity.zip”压缩包文件显然是针对Android系统的,特别是对于那些想要禁用verity功能的用户。verity是Android的一种安全特性,用于确保系统文件在启动时没有被篡改,增强了系统的安全性。 首先...

    disable-devtool:通过f12按钮,右键单击和浏览器菜单禁用Web开发人员工具

    import disableDevtool from 'disable-devtool' ; disableDevtool ( ) ; 1.2脚本属性配置 < script disable-devtool-auto src =' https://cdn.jsdelivr.net/npm/disable-devtool/disable-devtool.min.js ' > ...

    【使用正常】disable-wordpress-updates.zip

    标题"【使用正常】disable-wordpress-updates.zip"和描述中提到的问题正是关于如何屏蔽这些更新提示,同时又不影响网站性能。 首先,"disable-wordpress-updates.zip"是一个压缩包,通常包含了一个专门用于阻止...

    cWhoisv1.52查寻域名是否注册

    You can set $allowed="" to disable this security check. Please note that if you change the filename for any of the demo pages you must rename all occurences of it in the script to match. Some ...

    使用 REG 文件(Disable_Steps_Recorder.注册)禁用Windows步骤记录器

    2. 启用步骤记录器,下载文件(Disable_Steps_Recorder.注册) 3. 将 .reg 文件保存到桌面。 4. 双击/点击下载的 .reg 文件以将其合并。 5. 出现提示时,单击/点按“运行”、“是 (UAC)、是”和“确定”以批准合并...

    disable-enable.txt

    启用约束: enable( validate) :启用约束,创建索引,对已有及新加入的数据执行约束. enable novalidate :启用约束,创建索引,仅对新加入的数据强制执行约束,而不管表中的现有数据.

    uartlog-sgmii-disable-rgmii-pingerr.dat

    uartlog-sgmii-disable-rgmii-pingerr.dat

    Virtual Floppy driver

    SHELL Enable/disable the shell extension. OPEN Open a Virtual Floppy image. CLOSE Close a Virtual Floppy image. SAVE Save the current image into a file. PROTECT Enable/disable drive write protect...

    Making Games with Python & PyGame.pdf(with code)

    Source Code for Hello World with Pygame ................................................................................ 7 Setting Up a Pygame Program ....................................................

    arm-2014.05-29-arm-none-linux-gnueabi-linux

    Configured with: /scratch/maciej/arm-linux-2014.05-rel/src/gcc-4.8-2014.05/configure --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=arm-none-linux-gnueabi --enable-threads --disable-libm ...

    IPV4,IPV6的Enable和Disable批处理命令脚本文件

    ### IP版本控制脚本知识点详解 #### 一、概述 在计算机网络中,IP协议(Internet Protocol)是用于标识网络中的设备并使这些设备能够互相通信的重要协议之一。随着技术的发展,IPv4(Internet Protocol version 4...

    CIS_Solaris_10_Benchmark_v5.0.0

    2.2 Disable Unnecessary Local Services .......................................................................................... 18 2.2.1 Disable Local CDE ToolTalk Database Server .....................

Global site tag (gtag.js) - Google Analytics