未在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----------------");
}
}
});
答案 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);