Java 组合键在Ubuntu中不起作用

Java 组合键在Ubuntu中不起作用,java,ubuntu,swt,keylistener,Java,Ubuntu,Swt,Keylistener,在我的EclipseRCP应用程序(适用于Windows和UbuntuLinux)中,我希望防止用户复制和粘贴数据。我已经在Windows中成功地阻止了,但是在Ubuntu 12.04上,同样的代码不起作用。下面是适用于Windows的代码- htmlBrowser.addListener(SWT.KeyDown, new Listener() { @Override public void handleEvent(Event e) { if ((e.

在我的EclipseRCP应用程序(适用于Windows和UbuntuLinux)中,我希望防止用户复制和粘贴数据。我已经在Windows中成功地阻止了,但是在Ubuntu 12.04上,同样的代码不起作用。下面是适用于Windows的代码-

htmlBrowser.addListener(SWT.KeyDown, new Listener()
{
    @Override
    public void handleEvent(Event e)
    {
          if ((e.stateMask & SWT.CTRL) == SWT.CTRL && e.keyCode == 'c')
          {
              e.doit = false;
          }
    }
});
在上述情况下,流量不进入


有什么帮助吗?

好的,在LinuxMint上测试过,效果非常好。只需聆听
SWT.KeyDown
并检查用户是否按了Ctrl+c并将
event.doit
设置为
false

public static void main(String[] args)
{
    Display display = new Display();
    Shell shell = new Shell(display);
    shell.setLayout(new GridLayout(1, false));

    Text text = new Text(shell, SWT.BORDER);
    text.addListener(SWT.KeyDown, new Listener()
    {
        @Override
        public void handleEvent(Event e)
        {
            if ((e.stateMask & SWT.CTRL) == SWT.CTRL && e.keyCode == 'c')
            {
                e.doit = false;
            }
        }
    });

    shell.setSize(1000, 400);
    shell.open();

    while (!shell.isDisposed())
    {
        if (!display.readAndDispatch())
            display.sleep();
    }
    display.dispose();
}

你使用什么样的
监听器?此外:两个部分的计算结果是
false
,还是仅计算其中一个。如果只有一个,哪一个?用更多的代码更新帖子。您正在使用哪种侦听器:类型化和非类型化?。如果相同的代码在Windows上运行,而不是在Ubuntu上,那么我认为这是SWT中的一个bug。你可以在bug@ChandrayyaGK上记录bug@ChandrayyaGK Hold-your-horses:D,在将它作为bug发布之前,你应该确保它实际上是一个bug。。。您必须发布更多的代码以查看出了什么问题。@Baz-我已经用您的逻辑更新了代码,但仍然不起作用。@Baz-好吧,要添加更多内容,您使用了
Text
组件,而我使用的是
浏览器
。我用
Text
试过你的代码,效果很好。@johnswt
Browser
是一段棘手的代码。它似乎启动了
侦听器
,但忽略了
e.doit=false
。我几乎可以肯定,从SWT的角度看,你对此无能为力。但是,您可以在不希望任何人复制的内容上方放置一个不可见的
div
,以完全阻止选择。