我正在玩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)
外框裝飾,它的工作原理再次但是這不是我想要的,因爲標題欄丟失。有什麼辦法可以解決這個問題嗎?
現在JDK7能夠爲半透明窗口的原生支持,我爲什麼要堅持醜'Robot'解決方案? –
@趙一,我給你一個解決方案,我用在我的項目中,如果你認爲jdk7提供了一個更好的機會完成工作,那麼它總是更好地採用它... –
我也用過'機器人解決方案之前,但當「半透明」窗口背後的內容是動畫的時候(例如GIF或電影),它不起作用... –