组合不适用于Ubuntu

时间:2014-01-21 13:51:04

标签: java ubuntu swt keylistener

在我的Eclipse RCP应用程序(适用于Windows和Ubuntu Linux)中,我想阻止用户复制和粘贴数据。我已成功阻止在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;
          }
    }
});

在上述情况下,NOT进入流程。

任何帮助?

1 个答案:

答案 0 :(得分:1)

好的,在Linux Mint上测试了它,它运行得很好。只需听取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();
}