Java EclipseRCP-如何在文本编辑器中按ctrl+空格键获取自定义弹出菜单

Java EclipseRCP-如何在文本编辑器中按ctrl+空格键获取自定义弹出菜单,java,eclipse-rcp,Java,Eclipse Rcp,我们已经看到,在EclipseJava编辑器中,当我们对objectname执行ctrl+space键时,会出现一个弹出菜单,显示该类的方法和变量列表 在我的例子中,它不是java编辑器。但是我想实现上面提到的类似功能 我有30个固定对象,当该对象出现在文本编辑器中,并且我在对象名称的末尾按ctrl+space键时,我需要显示带有其成员变量的弹出菜单 你能指导我如何做到这一点吗 提前感谢。您需要在SourceViewer配置中注册JFace内容助手,请比较以下问题: 本页提供了更多示例: 这是E

我们已经看到,在EclipseJava编辑器中,当我们对objectname执行ctrl+space键时,会出现一个弹出菜单,显示该类的方法和变量列表

在我的例子中,它不是java编辑器。但是我想实现上面提到的类似功能

我有30个固定对象,当该对象出现在文本编辑器中,并且我在对象名称的末尾按ctrl+space键时,我需要显示带有其成员变量的弹出菜单

你能指导我如何做到这一点吗


提前感谢。

您需要在SourceViewer配置中注册JFace内容助手,请比较以下问题:

本页提供了更多示例:

这是Eclipse针对该特性的官方常见问题解答:

使用击键控制空间=KeyStroke.getKeyStrokeKeyEvent.VK_空间,InputEvent.CTRL_掩码

执行以下示例中的操作:

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import javax.swing.AbstractAction;
import javax.swing.InputMap;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.KeyStroke;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;

public class KeyTest extends JFrame {

    private JPanel contentPane;
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    KeyTest frame = new KeyTest();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    public KeyTest() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        contentPane.setLayout(new BorderLayout(0, 0));
        setContentPane(contentPane);

        JLabel lblClickHereAnd = new JLabel("Click here and press Ctrl+Space");
        contentPane.add(lblClickHereAnd, BorderLayout.NORTH);

         InputMap inputMap = contentPane.getInputMap();
         inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, InputEvent.CTRL_MASK), "foo");
         contentPane.getActionMap().put("foo", new AbstractAction() {
             public void actionPerformed(ActionEvent e) {
                 System.out.println("Key pressed");
             }
         });
         pack();
    }

}

谢谢大家的帮助。IContentAssistant将帮助我实现我的目标。遗憾的是,这在Eclipse使用SWT时不起作用。我在Swing项目中需要这个,它成功了!