Re: [問題] 有沒有辦法鎖定Focus在特定的按鈕或物件上
※ 引述《baconcsie (Bacon)》之銘言:
: 請問板上各位大大,有沒有辦法鎖定Focus在特定的物件或是按鍵上?
: 我的程式是打算當按下某個按鈕之後,就開始監聽鍵盤,每當按下一次鍵盤上任何
: 一個鍵,就會觸發一個事件,我嘗試直接讓Frame直接註冊keylisten,但行不通
: 似乎只有Button系列、Text系列的能註冊,但當我按鈕按下去之後,又不會自動
: Focus在註冊keylisten的物件上,還需要手動去點他一下,讓他Focus在上面,
: 而且點到其他地方,也會造成Focus跑掉,所以我想請問,有沒有辦法直接鎖定
: Focus在特定的物件上,或是讓視窗可以註冊keylisten
1.
從 current keyboard focus manager 新增 KeyEventDispatcher 來攔截/監視
key event。
http://download.oracle.com/javase/6/docs/api/java/awt/KeyboardFocusManager.html#getCurrentKeyboardFocusManager()
(http://tinyurl.com/4pguw72)
http://download.oracle.com/javase/6/docs/api/java/awt/KeyboardFocusManager.html#addKeyEventDispatcher(java.awt.KeyEventDispatcher)
(http://tinyurl.com/4ffl97d)
or
2.
透過 java.awt.Toolkit 來全面性(in JVM)監聽 AWTEvent。
http://download.oracle.com/javase/6/docs/api/java/awt/Toolkit.html#addAWTEventListener(java.awt.event.AWTEventListener,%20long)
(http://tinyurl.com/4zpp69t)
or
3.
hook system event queue。
http://download.oracle.com/javase/6/docs/api/java/awt/Toolkit.html#getSystemEventQueue()
(http://tinyurl.com/48wuvte)
http://download.oracle.com/javase/6/docs/api/java/awt/EventQueue.html#push(java.awt.EventQueue)
(http://tinyurl.com/4h2h642)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.136.168.158
※ 編輯: sbrhsieh 來自: 118.166.235.54 (03/05 02:22)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):