如何在SWT标签上执行Key Listener

时间:2015-10-15 07:21:49

标签: java swt

未在Label上执行KeyListener。请帮忙吗? 以下是代码段:

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----------------");
    }
    }
});

2 个答案:

答案 0 :(得分:2)

Label不支持关键事件。

您可以使用只读Text控件:

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

答案 1 :(得分:0)

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

如果要在整个窗口中侦听键盘事件,请将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);