1

ツリー項目のダブルクリックは完全に正常に機能しますが、キーボードで CTRL + M を押すと、ツリー項目が展開または折りたたまれます。この理由を教えてください。これは Eclipse のバグですか、それとも CTRL+M を押すとこのダブルクリック機能がトリガーされるのはなぜですか?

ありがとう。

4

2 に答える 2

7

TreeViewer.addDoubleClickListenerマウスリスナーではなく、ツリーのダブルクリックをリッスンするために使用します。次のようなものを使用できます。

private class DoubleClickListener implements IDoubleClickListener
{
  @Override
  public void doubleClick(final DoubleClickEvent event)
  {
    final IStructuredSelection selection = (IStructuredSelection)event.getSelection();
    if (selection == null || selection.isEmpty())
      return;

    final Object sel = selection.getFirstElement();

    final ITreeContentProvider provider = (ITreeContentProvider)treeViewer.getContentProvider();

    if (!provider.hasChildren(sel))
      return;

    if (treeViewer.getExpandedState(sel))
      treeViewer.collapseToLevel(sel, AbstractTreeViewer.ALL_LEVELS);
    else
      treeViewer.expandToLevel(sel, 1);
  }
}

更新:TreeViewer.addDoubleClickListenerから派生したすべてのクラスのダブルクリック処理を行うには、を使用することをお勧めしますStructuredViewer

各ダブルクリック リスナーはSafeRunnable、リスナーがスローする可能性のある例外を処理する を使用して実行されます。これにより、残りのコードがリスナーのエラーから保護されます。

は、モデル オブジェクト データへの直接アクセスを提供するため、オブジェクトを処理したり、オブジェクトを選択したりするDoubleClickEvent必要はありません。TreeTreeItem

TreeViewerインターフェイス内のダブルクリック コードは、OpenStrategyシングル/ダブル クリックでコードを開くことができます。

于 2014-03-17T11:39:52.213 に答える