【问题标题】:Getting unexpected output from the swing program从 swing 程序中获得意外的输出
【发布时间】: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


【解决方案1】:

在框架上调用SetUndecorated来移除标题栏/最大化按钮/等。这是一个很好的例子:http://docs.oracle.com/javase/tutorial/uiswing/misc/trans_shaped_windows.html#shaped

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-20
    • 1970-01-01
    • 1970-01-01
    • 2014-11-30
    • 2017-10-07
    • 2016-03-11
    相关资源
    最近更新 更多