[英]How to focus JDialog programmatically?
我在這里閱讀了一些類似的線程,但他們沒有幫助我。 我的JDialog是未修飾的,最初是不可聚焦的:
super(connectionsTree.getMainFrame(), "", false);
super.setUndecorated(true);
super.setFocusableWindowState(false);
super.setFocusable(false);
super.getContentPane().add(scrollPane);
super.pack();
現在每當這個對話框可見並且用戶選擇空格按鈕時,我必須使該JDialog聚焦,以便它接收關鍵事件。 我是這樣做的:
if (keyCode == 32) {
tooltip().setFocusable(true);
tooltip().setFocusableWindowState(true);
tooltip().requestFocusInWindow();
}
這段代碼使我的JDialog可以集中,但JDialog沒有集中精力,關鍵事件也沒有被它掌握。 tooltip()
方法只返回我的JDialog的實例。
如何使我的JDialog以編程方式獲得焦點?
謝謝!
根據requestFocusInWindow()
文檔 ,只有當頂級父組件是焦點所有者時,才會授予對Component
焦點。 因此,如果您的主窗口沒有關注它,這將無法工作。 您應該使用Component#requestFocus()
代替。 從Component#requestFocus()
描述
請求此Component獲取輸入焦點, 並且此Component的頂級祖先成為焦點Window。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.