所有相关的
使用 JFace TableViewer
,我想通过单击选择一些条目(例如选择文件),并通过双击执行一些其他操作(例如进入目录)。
注意到addSelectionChangedListener()
并addDoubleClickListener()
通过网页: http: //javafact.com/2010/08/07/example-tableviewer-events/ ,我为我添加了SelectionChangedListener
and ,并发现:两个听众中的任何一个都可以工作,但他们不能一起工作——实际上这是行不通的。 DoubleClickListener
TableViwer
DoubleClickListener
有什么问题?我应该如何实现单击和双击的侦听器?任何意见表示赞赏。
关于代码:我创建了一个 tableViewer,并希望显示文件系统结构。预期行为:用户可以双击目录条目,tableViewer 将显示所选目录的结构;用户通过单击选择通用文件。对于其他操作,将显示警告消息对话框。
以下只是与事件处理程序相关的代码。
tableView.addSelectionChangedListener( new ISelectionChangedListener() {
public void selectionChanged(SelectionChangedEvent event) {
IStructuredSelection sel = (IStructuredSelection) tableView.getSelection();
File selFile = (File) sel.getFirstElement();
if(selFile != null){
if (selFile.isDirectory()) {
MessageDialog.openWarning(getShell(), "Warning", "You select a directory");
return;
}
System.out.println("Selected : "+ selFile.getAbsolutePath());
selectFileName = selFile.getAbsolutePath();
}
}
});
tableView.addDoubleClickListener( new IDoubleClickListener() {
@Override
public void doubleClick(DoubleClickEvent arg0) {
Object selected;
IStructuredSelection selection = (IStructuredSelection) tableView.getSelection();
if (selection.size() != 1) return;
selected = selection.getFirstElement();
File file = (File) selected;
if (file.isFile()) {
MessageDialog.openInformation(getShell(),"Warning", "You double-clicks a generic file");
return;
}
if (file.isDirectory()) {
System.out.println("Clicked direcotry: " + file.getAbsolutePath());
//applyNewDirectory(file);
}
}
});
Sunzen 的问候和感谢