作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
原目标:
我有一个 TreeMenu 用于显示我的菜单。
在这棵树中,用户可以选择不同的项目。
我想禁用树,以便用户在选择第一个项目后无法选择新项目。
问题是,我们不能使用 setEnabled,因为我们不允许使用灰色外观。外观/颜色可能不会改变。
我们提出的解决方案
我们的第一个想法是在菜单顶部使用带有 SWT.NO_BACKGROUND 的 Composite,以防止任何用户与 TreeMenu 交互。
代码:
final Composite cover = new Composite(getPage().shell, SWT.NO_BACKGROUND);
cover.setLocation(getMenu().getLocation());
cover.setSize(getMenu().getSize());
cover.moveAbove(getMenu());
cover.moveBelow(getMenu());
getMenu().update();
cover.moveAbove(getMenu());
最佳答案
看 SWT-Snippet80 .它显示了如何防止选择。您的问题的解决方案是将这样的监听器添加到您的树中:
tree.addListener(SWT.Selection, new Listener() {
TreeItem[] oldSelection = null;
public void handleEvent( Event e ) {
Tree tree = (Tree)(e.widget);
TreeItem[] selection = tree.getSelection();
if ( oldSelection != null )
tree.setSelection(oldSelection);
else
oldSelection = selection;
}
});
关于swt - 使用 SWT.NO_BACKGROUND 重绘复合背后的控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2207428/
我是一名优秀的程序员,十分优秀!