Java SWT中操作的键盘快捷键
如何定义与Java SWT中操作的键盘快捷键,java,eclipse,eclipse-plugin,swt,jface,Java,Eclipse,Eclipse Plugin,Swt,Jface,如何定义与TreeViewer或TableViewer(或一般任何控件)的上下文菜单项关联的操作的键盘快捷键(加速器) 我有不同类型对象的树和表,我有像“上移”、“下移”、“扩展”或“折叠”这样的通用操作。我为表或树控件创建了上下文菜单,但我希望用户能够调用操作,而无需右键单击所选内容(或通常无需使用鼠标)。例如,当查看者处于焦点状态且用户按下Alt键时,应调用“上移”操作+↑. 将加速器设置为该操作无效。我也不想将操作添加到主菜单栏(如编辑菜单等)。我认为您正在使用操作来执行操作 召唤 在动作
TreeViewer
或TableViewer
(或一般任何控件)的上下文菜单项关联的操作的键盘快捷键(加速器)
我有不同类型对象的树和表,我有像“上移”、“下移”、“扩展”或“折叠”这样的通用操作。我为表或树控件创建了上下文菜单,但我希望用户能够调用操作,而无需右键单击所选内容(或通常无需使用鼠标)。例如,当查看者处于焦点状态且用户按下Alt键时,应调用“上移”操作+↑.
将加速器设置为该操作无效。我也不想将操作添加到主菜单栏(如编辑菜单等)。我认为您正在使用
操作来执行操作
召唤
在动作构造函数中,指定此动作处理的命令
使用扩展点org.eclipse.ui.commands
在plugin.xml中声明命令
使用org.eclipse.ui.bindings
扩展点将一个键序列绑定到命令。我认为您正在使用操作来执行操作
召唤
在动作构造函数中,指定此动作处理的命令
使用扩展点org.eclipse.ui.commands
在plugin.xml中声明命令
使用org.eclipse.ui.bindings
扩展点将一个键序列绑定到命令。我认为您正在使用操作来执行操作
召唤
在动作构造函数中,指定此动作处理的命令
使用扩展点org.eclipse.ui.commands
在plugin.xml中声明命令
使用org.eclipse.ui.bindings
扩展点将一个键序列绑定到命令。我认为您正在使用操作来执行操作
召唤
在动作构造函数中,指定此动作处理的命令
使用扩展点org.eclipse.ui.commands
在plugin.xml中声明命令
使用org.eclipse.ui.bindings
扩展点将一个键序列绑定到命令。仅适用于后代:
我听从了格雷格的建议,在查看器控件中添加了KeyListsner。这是我的类的一个片段,它包装了StructuredViewer:
private class ViewerWrapper{
private StructuredViewer fViewer;
[...]
private class ViewerKeyAdapter implements KeyAdapter{
private int fKeyCode;
private Action fAction;
private int fStateMask;
public ViewerKeyAdapter(int keyCode, int stateMask, Action action){
fKeyCode = keyCode;
fStateMask = stateMask;
fAction = action;
}
@Override
public void keyReleased(KeyEvent e) {
if((e.stateMask & fStateMask) != 0 || fStateMask == SWT.NONE){
if(e.keyCode == fKeyCode){
fAction.run();
}
}
}
}
[...]
public void addKeyListener(int keyCode, int stateMask, Action action){
fViewer.getControl().addKeyListener(new ViewerKeyAdapter(keyCode, modifier, action));
}
}
我花在这件事上的大部分时间都是为了意识到SWT.UP
和SWT.ARROW\u UP
是不一样的…只是为了子孙后代:
我听从了格雷格的建议,在查看器控件中添加了KeyListsner。这是我的类的一个片段,它包装了StructuredViewer:
private class ViewerWrapper{
private StructuredViewer fViewer;
[...]
private class ViewerKeyAdapter implements KeyAdapter{
private int fKeyCode;
private Action fAction;
private int fStateMask;
public ViewerKeyAdapter(int keyCode, int stateMask, Action action){
fKeyCode = keyCode;
fStateMask = stateMask;
fAction = action;
}
@Override
public void keyReleased(KeyEvent e) {
if((e.stateMask & fStateMask) != 0 || fStateMask == SWT.NONE){
if(e.keyCode == fKeyCode){
fAction.run();
}
}
}
}
[...]
public void addKeyListener(int keyCode, int stateMask, Action action){
fViewer.getControl().addKeyListener(new ViewerKeyAdapter(keyCode, modifier, action));
}
}
我花在这件事上的大部分时间都是为了意识到SWT.UP
和SWT.ARROW\u UP
是不一样的…只是为了子孙后代:
我听从了格雷格的建议,在查看器控件中添加了KeyListsner。这是我的类的一个片段,它包装了StructuredViewer:
private class ViewerWrapper{
private StructuredViewer fViewer;
[...]
private class ViewerKeyAdapter implements KeyAdapter{
private int fKeyCode;
private Action fAction;
private int fStateMask;
public ViewerKeyAdapter(int keyCode, int stateMask, Action action){
fKeyCode = keyCode;
fStateMask = stateMask;
fAction = action;
}
@Override
public void keyReleased(KeyEvent e) {
if((e.stateMask & fStateMask) != 0 || fStateMask == SWT.NONE){
if(e.keyCode == fKeyCode){
fAction.run();
}
}
}
}
[...]
public void addKeyListener(int keyCode, int stateMask, Action action){
fViewer.getControl().addKeyListener(new ViewerKeyAdapter(keyCode, modifier, action));
}
}
我花在这件事上的大部分时间都是为了意识到SWT.UP
和SWT.ARROW\u UP
是不一样的…只是为了子孙后代:
我听从了格雷格的建议,在查看器控件中添加了KeyListsner。这是我的类的一个片段,它包装了StructuredViewer:
private class ViewerWrapper{
private StructuredViewer fViewer;
[...]
private class ViewerKeyAdapter implements KeyAdapter{
private int fKeyCode;
private Action fAction;
private int fStateMask;
public ViewerKeyAdapter(int keyCode, int stateMask, Action action){
fKeyCode = keyCode;
fStateMask = stateMask;
fAction = action;
}
@Override
public void keyReleased(KeyEvent e) {
if((e.stateMask & fStateMask) != 0 || fStateMask == SWT.NONE){
if(e.keyCode == fKeyCode){
fAction.run();
}
}
}
}
[...]
public void addKeyListener(int keyCode, int stateMask, Action action){
fViewer.getControl().addKeyListener(new ViewerKeyAdapter(keyCode, modifier, action));
}
}
我花在这上面的大部分时间都是为了意识到SWT.UP
和SWT.ARROW\u UP
是不一样的…这样做不能不影响plugin.xml吗?我也找不到org.eclipse.ui.keys扩展点。org.eclipse.ui.commands中有keyBinding项。可以改用它吗?对不起,应该是org.eclipse.ui.bindings
扩展点。您可以始终处理表上的KeyDown
事件,并检查快捷键。这样做不能不影响plugin.xml吗?我也找不到org.eclipse.ui.keys扩展点。org.eclipse.ui.commands中有keyBinding项。可以改用它吗?对不起,应该是org.eclipse.ui.bindings
扩展点。您可以始终处理表上的KeyDown
事件,并检查快捷键。这样做不能不影响plugin.xml吗?我也找不到org.eclipse.ui.keys扩展点。org.eclipse.ui.commands中有keyBinding项。可以改用它吗?对不起,应该是org.eclipse.ui.bindings
扩展点。您可以始终处理表上的KeyDown
事件,并检查快捷键。这样做不能不影响plugin.xml吗?我也找不到org.eclipse.ui.keys扩展点。org.eclipse.ui.commands中有keyBinding项。可以改用它吗?对不起,应该是org.eclipse.ui.bindings
扩展点。您始终可以处理表上的KeyDown
事件并检查快捷键