ツリー項目のダブルクリックは完全に正常に機能しますが、キーボードで CTRL + M を押すと、ツリー項目が展開または折りたたまれます。この理由を教えてください。これは Eclipse のバグですか、それとも CTRL+M を押すとこのダブルクリック機能がトリガーされるのはなぜですか?
ありがとう。
ツリー項目のダブルクリックは完全に正常に機能しますが、キーボードで CTRL + M を押すと、ツリー項目が展開または折りたたまれます。この理由を教えてください。これは Eclipse のバグですか、それとも CTRL+M を押すとこのダブルクリック機能がトリガーされるのはなぜですか?
ありがとう。
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
必要はありません。Tree
TreeItem
TreeViewer
インターフェイス内のダブルクリック コードは、OpenStrategy
シングル/ダブル クリックでコードを開くことができます。