2015-10-15 19 views
0

KeyListener不在Label上執行。請幫助任何一個? 下面的代碼片段:如何在SWT標籤上執行Key Listener

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

您已經添加的KeyListener爲標籤。 標籤必須有焦點才能獲得活動。

如果你想監聽鍵盤事件在你的整個窗口,然後添加的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); 
+0

breakNodeLabel.getShell()addKeyListener(新KeyAdapter({..............也沒有工作 –

+0

我有一個圖片所在的標籤,所以不能使用文本。你可能有想法我使用按鈕改變它的外觀和感覺像標籤。(刪除按鈕的邊框) –

+0

使用顯示。 addFilter – Kuba

2

Label不支持關鍵事件。

你可以使用,而不是隻讀Text控制。)

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