【问题标题】:How to get the Keyboard curser focus to edit the label text, when we double click on CheckboxTreeViewer selected item当我们双击 Checkbox TreeView selected item 时,如何获得键盘光标焦点以编辑标签文本
【发布时间】:2016-04-02 00:50:19
【问题描述】:
public class MyLabelProvider extends LabelProvider {

    @Override
    public Image getImage(Object element) {
        return createImage(imagePath);
    }

    @Override
    public String getText(Object element) {
        return MessageFormat.format((String)element); // CheckBOxTreeViewer, AA, BBB //and etc.
    }

    @Override
    public void dispose() {

    }

}


public class MyContentProvider implements ITreeContentProvider, IViewerListener {

    private CheckboxTreeViewer viewer;
  @Override
    public void inputChanged(Viewer viewer, Object oldInput, Object NewInput) {

    }

    @Override
    public Object[] getElements(Object inputElement) {
    }

    @Override
    public Object[] getChildren(Object parentElement) {
    }
    @Override
    public Object getParent(Object element) {
    }
    @Override
    public boolean hasChildren(Object element) {
    }
    @Override
    public void refreshOnlyContent(Object element) {
    }
    @Override
    public void refreshOnlyLabels() {
    }
    @Override
    public void refreshEverything(Object element) {
    }

    @Override
    public void dispose() {
    }
}


public class MyClass {

@PostConstruct
    public void postConstruct(Composite composite) {

CheckboxTreeViewer   treeViewer = new CheckboxTreeViewer(Composite);

MyContentProvider contentProvider = new MyContentProvider ();

treeViewer.setContentProvider(contentProvider);

IViewerListener  viewerListener = contentProvider;

treeViewer.setLabelProvider(new MyLabelProvider ());

treeViewer.addDoubleClickListener(new IDoubleClickListener() {

 @Override
public void doubleClick(DoubleClickEvent event) {

      //editor cursor focus code
  }
});

}
}

如何编辑CheckboxTreeViewer标签文本。

本项目示例标签文字为CheckBOxTreeViewer、AA、BBB等

当我们双击CheckboxTreeViewer 项目时,如何获得键盘光标焦点以编辑标签文本。 CheckboxTreeViewer Image

【问题讨论】:

  • 您需要使用EditingSupport 阅读this 之类的内容(编辑支持适用于树和表格)

标签: java jface treeviewer


【解决方案1】:

Edition 不像 AWT/Swing 中的那样。

你需要在treeViewer上使用:

  • setColumnProperties() 为编辑列命名。默认情况下,树只有一列,因此您可以使用只有一个元素的数组)
  • setCellEditors() 表示您如何编辑值(文本, 组合,...)
  • setCellModifier() 在行对象之间建立连接, 和编辑器(转换值,表示该值是否为 可编辑,...)

如果你想双击版本:

TreeViewerEditor.create(treeViewer, new ColumnViewerEditorActivationStrategy(treeViewer){
    protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) {  
        return event.eventType == ColumnViewerEditorActivationEvent.MOUSE_DOUBLE_CLICK_SELECTION;
    }

您也可以查看这篇非常有趣的文章:http://ramkulkarni.com/blog/in-place-editing-in-eclipse-treeviewer/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 2016-06-16
    • 1970-01-01
    • 2016-07-25
    相关资源
    最近更新 更多