2012-09-19 85 views
2

我正在玩JDK7的半透明窗口支持,發現它不適合Windows的外觀和感覺。具有Windows外觀和感覺的半透明窗戶?

這裏是我的代碼:

JFrame.setDefaultLookAndFeelDecorated(true); 
SwingUtilities.invokeLater(new Runnable() { 
    @Override 
    public void run() { 
     JFrame frame = new JFrame("Translucent Window"); 
     frame.setOpacity(0.5F); 
     frame.setSize(640, 360); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setLocationRelativeTo(null); 
     frame.setVisible(true); 
    } 
} 

此代碼正確顯示半透明窗口。但是,如果我設置Windows的外觀和感覺:

UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); 

拋出一個異常:

Exception in thread "AWT-EventQueue-0" java.awt.IllegalComponentStateException: The frame is decorated 

如果我禁用與frame.setUndecorated(true)外框裝飾,它的工作原理再次但是這不是我想要的,因爲標題欄丟失。有什麼辦法可以解決這個問題嗎?

回答

1

請參見本教程,瞭解如何使JFrame透明或半透明

http://blogofjavacrazy.blogspot.in/2007/03/transparent-window-in-java.html

我偶然發現了一個整潔的小黑客工具,而不是實際上是透明的,它需要一個屏幕截圖,並補充說,小段的背景。

看到此鏈接:

http://onjava.com/pub/a/onjava/excerpt/swinghks_hack41/index.html

+0

現在JDK7能夠爲半透明窗口的原生支持,我爲什麼要堅持醜'Robot'解決方案? –

+0

@趙一,我給你一個解決方案,我用在我的項目中,如果你認爲jdk7提供了一個更好的機會完成工作,那麼它總是更好地採用它... –

+0

我也用過'機器人解決方案之前,但當「半透明」窗口背後的內容是動畫的時候(例如GIF或電影),它不起作用... –