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