如何在 SWT 标签上执行 Key Listener

How to perform Key Listener on SWT Label

KeyListener 没有在 Label 上执行。请帮助任何人? 以下是代码片段:

breakNodeLabel = new Label(this, SWT.WRAP);
breakNodeLabel.setBackground(new Color(getDisplay(), 204, 204, 204));
breakNodeLabel.addKeyListener(new KeyAdapter() {
    @Override
    public void keyPressed(KeyEvent event) {
    if (event.keyCode == SWT.DEL) {
        // deleteNode(this);
        System.out.println("------------Delete Break NODE----------------");
    }
    }
});

您已将 KeyListener 添加到 Label。 标签必须有焦点才能获取事件。

如果您想在整个 window 中监听键盘事件,请将 KeyListener 添加到您的 shell:

shell.addKeyListener(new KeyAdapter()...

如果你想要全局 KeyListener 添加显示过滤器:

Listener listener = new Listener() {

    @Override
    public void handleEvent(Event e) {
        if(e.type == SWT.KeyDown||e.type == SWT.KeyUp) {
            System.out.println("" + e.keyCode);
        }
    }
};
display.addFilter(SWT.KeyDown, listener);
display.addFilter(SWT.KeyUp, listener);

Label不支持按键事件。

您可以改用只读 Text 控件:

new Text(this, SWT.READ_ONLY | SWT.WRAP);