Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SWT中操作的键盘快捷键_Java_Eclipse_Eclipse Plugin_Swt_Jface - Fatal编程技术网

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
事件并检查快捷键