2012-08-08 33 views
0

在下面的代碼中,爲什麼我會看到一個隱形窗口? setUndecorated()做什麼以及它用於何處。從swing程序獲取意外輸出

import java.awt.Color; 
import java.awt.Dimension; 
import java.awt.Toolkit; 

import javax.swing.JFrame; 
import javax.swing.SwingUtilities; 


public class UsingJLayer { 

UsingJLayer() 
{ 
    JFrame jfrm=new JFrame("Picasa Viewer"); 
    jfrm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    Dimension dim=Toolkit.getDefaultToolkit().getScreenSize(); 
    jfrm.setSize(dim); 
    jfrm.setUndecorated(true); 
    jfrm.setBackground(new Color(0,100,0,0)); 


    jfrm.setVisible(true); 

} 
public static void main(String[] args) { 
    //JFrame.setDefaultLookAndFeelDecorated(true); 
    SwingUtilities.invokeLater(new Runnable(){public void run(){new UsingJLayer();}}); 

} 

}

其次如果我註釋掉jfrm.setUndecorated(true),而使用JFrame.setDefaultLookAndFeelDecorated(true);然後我得到一個半透明窗口預期。 那麼,什麼是setUndecorated()JFrame.setDefaultLookAndFeelDecorated(true);。我必須使用其中之一,否則會引發異常。

+1

哪一部分的這些方法的Javadoc的你還不明白嗎? – Robin 2012-08-08 13:11:46

+0

它對於setUndecorated()說:「只有在框架不可顯示時才能調用此方法。爲了使此框架具有裝飾性,它必須是不透明的並且具有默認形狀,否則將引發IllegalComponentStateException。 我很困惑,因爲它說它使裝飾,它必須有默認的形狀和不透明,然後如果我們想要甚至改變形狀以及不透明度。 換句話說,我不清楚「setUndecorated」的用法是什麼, – 2012-08-08 13:16:11

回答