当创建的JFace TreeViewer
,可以使用的SWT常量设置允许用户在树中的项目(或SWT.SINGLE
SWT.MULTI
)单个或多个选择。如何设置JFace TreeViewer而不允许选择?
谁能帮我请,我想,它的项目不能在所有选择一棵树?我希望它用于预览目的,并且用户不应该能够在那里选择项目。
提前许多感谢,
当创建的JFace TreeViewer
,可以使用的SWT常量设置允许用户在树中的项目(或SWT.SINGLE
SWT.MULTI
)单个或多个选择。如何设置JFace TreeViewer而不允许选择?
谁能帮我请,我想,它的项目不能在所有选择一棵树?我希望它用于预览目的,并且用户不应该能够在那里选择项目。
提前许多感谢,
我真的不明白为什么要取消选择,但是这怎么可能工作:
viewer.addSelectionChangedListener(new ISelectionChangedListener() {
@Override
public void selectionChanged(final SelectionChangedEvent event) {
if (!event.getSelection().isEmpty()) {
v.setSelection(StructuredSelection.EMPTY);
}
}
});
除了这个我会做确保浏览器:
你可以试试这个? 基本上在选择事件中添加过滤器。在浏览器实现的情况下, org.eclipse.jface.util.OpenStrategy类负责发射选择什么样的事件查看器的理解。如果过滤器被添加到SWT选择事件中,Viewer将永远不会知道底层选择。
public class SWTSimpleTree {
Display display = new Display();
Shell shell = new Shell(display);
Tree tree;
private Listener filter = new Listener() {
@Override
public void handleEvent(Event event) {
event.type=SWT.None;
event.doit=false;
event.item = null;
tree.deselectAll();
}
};
public SWTSimpleTree() {
shell.setLayout(new GridLayout());
tree = new Tree(shell, SWT.BORDER);
tree.setLayoutData(new GridData(GridData.FILL_BOTH));
TreeItem item = new TreeItem(tree, SWT.NULL);
item.setText("ITEM");
TreeItem item2 = new TreeItem(item, SWT.NULL);
item2.setText("ITEM2");
TreeItem item3 = new TreeItem(item2, SWT.NULL);
item3.setText("ITEM3");
System.out.println("item: " + item.getParent() + ", " + item.getParentItem());
System.out.println("item2: " + item2.getParent() + ", " + item2.getParentItem());
System.out.println(tree.getItemCount());
System.out.println(tree.getItems().length);
tree.getDisplay().addFilter(SWT.Selection, filter);
tree.getDisplay().addFilter(SWT.DefaultSelection, filter);
shell.setSize(300, 200);
shell.open();
//textUser.forceFocus();
// Set up the event loop.
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
// If no more entries in event queue
display.sleep();
}
}
display.dispose();
}
private void init() {
}
public static void main(String[] args) {
new SWTSimpleTree();
}
}
另一个简单的办法是把观众到一个单独的复合材料,并设置它的启用状态为false:
Composite c = new Composite(parent, SWT.NONE);
TreeViewer viewer = new TreeViewer(c, SWT.Border);
c.setEnabled(false);
你的观众,现在不会出现灰色(设置viewer.setEnabled
会使其灰色),但用户无法在查看器中选择任何内容。更新和刷新查看器工作得很好。但请记住,现在单击进入查看器时不会出现SelectionEvents
。
谢谢。这是一个很长的故事来解释,但我在的情况下,当我需要这个非常糟糕的和必要的,它是一个TreeViewer中“预览”的宗旨,其中一个选择可以被用户误解,我可以不要使用别的东西,因为我从另一个更大的treeviewer中提取这个treeviewer ..再次感谢 – mobaisch