我们已经看到在eclipse Java Editor中,当我们在objectname上执行(ctrl + space)键时,会出现一个弹出菜单,显示该类的方法和变量列表。
就我而言,它不是java编辑器。但我希望实现与上述类似的功能。
我有30个修复对象,当该对象出现在文本编辑器中并且我在对象名称末尾执行(ctrl + space)键时,我需要显示弹出菜单及其成员变量。
请您指导我如何实现这一目标。
提前致谢。
答案 0 :(得分:1)
您需要在SourceViewerConfiguration中注册JFace内容助手,比较以下问题:How to implement content assist's documentation popup in Eclipse RCP
这是此功能的官方Eclipse常见问题解答:http://wiki.eclipse.org/FAQ_How_do_I_add_Content_Assist_to_my_editor%3F
答案 1 :(得分:-1)
使用KeyStroke controlspace = KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, InputEvent.CTRL_MASK);
做类似这样的事情:
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();
}
}