2013-02-03 13 views
3

我正在嘗試創建Java Swing對話框,但我不想讓對話框將焦點從當前的任何焦點移開。因此,例如,如果您正在編輯單詞文檔,而其他應用程序會創建對話框,則應該看到對話框,但單詞文檔應保持對焦狀態,以便您可以繼續進行編輯。停止新創建的對話框關注焦點

我在Mac OSX和Ubuntu 12.04上測試了以下代碼。在Mac上,代碼會創建不需要像我想要的焦點的對話框。在Ubuntu上,對話框是焦點,我無法在創建時鍵入。

我真的希望這不是操作系統特定的。有什麼方法可以實現我在所有平臺(或者至少Ubuntu)上所要做的事情?

import javax.swing.*; 
import java.awt.Color; 
import java.util.Random; 

public class Focus { 
    private static Random r = new Random(); 

    public static void main(String[] args) { 
     while(true) { 
      try { 
       Thread.sleep(500); 
       createObject(r.nextInt(1000), r.nextInt(600)); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 

    public static void createObject(int x, int y) { 
     JDialog testDialog = new JDialog(); 
     testDialog.setSize(50, 50); 
     testDialog.setLocation(x, y); 
     testDialog.setAlwaysOnTop(true); 
     testDialog.setUndecorated(true); 
     testDialog.setFocusable(false); 
     testDialog.setEnabled(false); 
     testDialog.setVisible(true); 
    } 
} 
+0

我已經在Windows 7上運行你的代碼,它的工作原理是你想要的 - 而程序創建盒我可以輸入。 –

+0

相同的Windows Vista :) – zibi

回答

3

可能:

testDialog.setFocusableWindowState(false); 
+0

我花了永遠試圖弄清楚,謝謝! – gsingh2011