![](/img/trans.png)
[英]Opening custom editor when a file contains an specific text (Eclipse RCP)
[英]Eclipse Rcp - How to get custom PopUp Menu in text editor on ctrl + space on text
我們已經看到,在Eclipse Java編輯器中,當對對象名執行(ctrl +空格)鍵時,將出現一個彈出菜單,顯示該類的方法和變量的列表。
就我而言,它不是Java編輯器。 但是我想實現如上所述的類似功能。
我有30個修復對象,當該對象出現在文本編輯器中並且在對象名稱的末尾使用(ctrl +空格)鍵時,我需要顯示帶有其成員變量的彈出菜單。
您能否指導我如何實現這一目標。
提前致謝。
您需要在SourceViewerConfiguration中注冊一個JFace內容助手,然后比較以下問題: 如何在Eclipse RCP中實現內容助手的文檔彈出窗口
該頁面甚至提供了更多示例: http : //www.programcreek.com/java-api-examples/index.php? api= org.eclipse.jface.text.contentassist.IContentAssistant
這是此功能的官方Eclipse FAQ: http : //wiki.eclipse.org/FAQ_How_do_I_add_Content_Assist_to_my_editor%3F
使用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();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.