【发布时间】:2012-08-08 13:07:42
【问题描述】:
在下面的代码中,为什么我得到一个不可见的窗口?什么是
setUndecorated() 做以及它的用途。
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); 是什么。我必须使用其中一个,否则会引发异常。
【问题讨论】:
-
这些方法的javadoc的哪一部分你不明白?
-
上面写着 for setUndecorated()"这个方法只能在框架不可显示时调用。要使这个框架被装饰,它必须是不透明的并且具有默认形状,否则会抛出 IllegalComponentStateException 。”我很困惑,因为它说要让它装饰,它必须具有默认形状和不透明,那么如果我们想要改变形状和不透明度怎么办。换句话说,我不清楚“setUndecorated”的用途是什么
标签: java swing jframe fullscreen translucency