2016-05-31 37 views
0

我有我顯示Popup包含文本字段一個Java FX應用程序。即使用戶點擊它,我仍然故意保持這個彈出窗口可見。這個工程除了一個案件罰款:的Java FX 8彈出不能將焦點返回到應用

當用戶集中在彈出的文本字段,然後點擊一個單獨的應用程序,然後單擊返回到文本字段。 FX應用程序不會從操作系統重新獲得焦點。如果用戶在鍵盤上鍵入,則其他應用程序仍然會收到鍵盤輸入。要解決這個問題,用戶必須點擊彈出窗口外的主FX應用程序窗口。

奇怪的是,在調試時,我可以看到,在彈出的文本字段獲得焦點,但操作系統不表明FX應用程序現在處於焦點。有沒有辦法可以強制操作系統將焦點移至我的應用程序?

這發生在Windows和Mac。我在JDK 8日更新45和JDK 8日更新92

我做了一個最小的彈出測試測試:

static class TestPopup extends Popup { 
     TestPopup() { 
      content.add(new TextField("Hello")) 
     } 
    } 

,我展示它通過調用:

new TestPopup().show(somePaneInMainWindow, 0, 0) 

回答

0

經過一番研究,我發現這是預期的行爲。

答案在這裏找到: http://bugs.java.com/bugdatabase/view_bug.do?bug_id=8123137

從鏈接:

這是正確的行爲。所有的JavaFX彈出窗口都是不可聚焦的,因此只有在當前關注的所有者窗口爲 的情況下才可以接收輸入。當所有者 得不到重點時,通常會將彈出窗口設置爲自動隱藏,但在此測試中情況並非如此,因此彈出窗口 只是停留在附近。

相關問題