簡體   English   中英

SWT Text Focus和默認選擇(返回鍵)事件

[英]SWT Text Focus and default selection(return key) events

我的RCP遇到一個奇怪的問題。 我不使用Linux進行開發,因此我對常見錯誤的了解很少。 我正在使用Ubuntu 11.10嘗試RCP。

在我的RCP中,我有一個SWT文本,該文本具有兩個附加的偵聽器-一個用於焦點( FocusAdapter ),另一個用於SWT.DefaultSelection FocusAdapter ,我實現了focusLost方法。

行為是這樣的,如果並且當用戶編輯文本並按下返回鍵時 ,將調用SWT.DefaultSelection偵聽器的handleEvent並顯示一條消息,以確認新文本並更新Text字段。 如果用戶編輯文本但focusLost 回車鍵,而只是單擊Text字段外,則將調用focusLost事件,該事件focusLost文本恢復為原始文本( text.setText(originalText); )。

當我從Eclipse啟動它時,這似乎工作正常,但是當我通過Maven + Tycho導出產品時,該行為似乎停止了。 發生的情況是,當用戶編輯文本時,無論用戶是否按了回車鍵,或者只是在“ Text字段外單擊,它都將還原為原始文本。 也不顯示確認已編輯文本的消息對話框。

從我的收集來看,似乎僅使用focusLost事件,而返回鍵無效。 如果這很明顯,我深表歉意,但是我沒有在Windows機器上遇到過這,這是我進行主要開發時所使用的。

您可以改為監聽SWT.Traverse並檢查event.detail等於SWT.TRAVERSE_RETURN 我在Linux上對其進行了測試,並且可以正常工作:

public static void main(String[] args)
{
    final Display display = new Display();
    final Shell shell = new Shell(display);
    shell.setLayout(new FillLayout());

    final Text text = new Text(shell, SWT.BORDER);
    text.addListener(SWT.Traverse, new Listener()
    {
        @Override
        public void handleEvent(Event event)
        {
            if(event.detail == SWT.TRAVERSE_RETURN)
            {
                System.out.println("Enter pressed");
            }
        }
    });

    shell.pack();
    shell.open();

    while (!shell.isDisposed())
    {
        if (!display.readAndDispatch())
        {
            display.sleep();
        }
    }
    display.dispose();
}

這里有一個相關的問題:

SWT跨平台輸入檢測

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM