簡體   English   中英

如何以編程方式聚焦JDialog?

[英]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.

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