导 致 V iew 树重新遍历的总体诱因

导 致 V iew 树重新遍历的总体诱因

下面介绍各种能引起View树重新遍历的操作,这些操作总的来讲可以分为三类。一类是导致视图
大小发生变化;第 二 类是导致ViewGroup重新为子视图分配位置;第三类是视图显示情况发生变化需
要 重 绘 。这 三 类 情 况 最 后 都 直 接 或 间 接 调 用 到 三 个 函 数 ,分 别 为 invalidateO、 requestLayoutO及
requestFocus(),而这三个函数最终都会调用到ViewRoot中 的schueduleTraversals()函数,该函数然后发
起一个异步消息,消息处理中调用performTraversals()开始对整个View进行重新遍历,如 图 13-10所不。
能导致调用invalidate()函数的包含三种情况:当应用程序改变视图显示属性时,调 用 setVisibility();
当改变视图Selected状态时,调 用 setSelected();当改变视图Enable状态时,调 用 setEnable()函数。

导 致 调 用 requestLayoutO函 数 的 情 况 包 含 两 种 : 当 应 用 程 序 改 变 视 图 显 示 属 性 时 , 调用
setVisibility(),由于显示或者不显示将影响其他兄弟视图的位置,因此会调用到requestLayout();第二
种是应用程序直接或间接调用该函数,间接调用是指应用程序调用了 View类的其他函数,从而间接调
用到 requestLayou()。
requestFocusO—般由程序直接调用,间接调用是指当用户按“上/下”、 “左/右” 键时,相关的处理
逻辑会间接调用到该函数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现这个功能,你需要在 SWT 中使用 Table 类和 TableItem 类。首先,你需要创建一个 Table 控件,然后添加 TableItem。每个 TableItem 代表一个单元格,你可以在其中添加文本或图像等内容。接下来,你需要为 Table 控件添加 SelectionListener,以便在用户单击表格项时触发事件。在事件处理程序中,你可以获取所选项的索引,然后使用该索引打开相应的视图。 下面是一个示例代码片段: ```java Table table = new Table(shell, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL); table.setLinesVisible(true); table.setHeaderVisible(true); TableColumn column1 = new TableColumn(table, SWT.NONE); column1.setText("Column 1"); TableColumn column2 = new TableColumn(table, SWT.NONE); column2.setText("Column 2"); for (int i = 0; i < 10; i++) { TableItem item = new TableItem(table, SWT.NONE); item.setText(new String[] {"Item " + i, "Description for Item " + i}); } table.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { TableItem[] selection = table.getSelection(); if (selection.length > 0) { int index = table.indexOf(selection[0]); // 打开相应的视图 } } }); ``` 在此示例中,我们创建了一个带有两个列的表格,并向其添加了 10 个 TableItem。当用户单击表格中的任何项时,将触发 widgetSelected 事件处理程序。在此处理程序中,我们获取所选项的索引,然后可以使用该索引打开相应的视图。 希望这可以帮助你实现所需的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值