今天在这个网站上http://www.iteye.com/topic/707514
看到了制作不规则JFrame窗口的方法,利用AWTUtilities.setWindowOpaque(Jframe true);方法将JFrame设置为透明,
然后再JPanel上画图,相当于直接在桌面上画图,
可是无轮我怎么试验都透明不了,
即使复制教程里一模一样的代码进去也一样,怎么回事啊,是我的系统环境问题还是编译器问题?
这是一个最简单的例子,可是还是运行不了,求教各位大神啊,我快疯了,这个问题折腾一天了:import java.awt.*;
import javax.swing.*;
import com.sun.awt.AWTUtilities;public class MyJFrame extends JFrame {    public MyJFrame() {
         
        setVisible(true);
        AWTUtilities.setWindowOpaque(this, false);
        setSize(640,480);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }    public static void main(String[] args) {
        MyJFrame j = new MyJFrame();
    }
}

解决方案 »

  1.   

    run:
    Exception in thread "main" java.awt.IllegalComponentStateException: The frame is decorated
    at java.awt.Frame.setBackground(Frame.java:986)
    at java.awt.Window$1.setOpaque(Window.java:4021)
    at com.sun.awt.AWTUtilities.setWindowOpaque(AWTUtilities.java:360)
    at pack.newpackage.MyJFrame.<init>(MyJFrame.java:12)
    at pack.newpackage.MyJFrame.main(MyJFrame.java:18)虽然可以运行,但编译器报错,就是实现不了透明效果,即使我复制教程网上一模一样的代码,也一样报错。
    到底为什么啊?
      

  2.   

    package pack.newpackage;import java.awt.*;
    import javax.swing.*;
    import com.sun.awt.AWTUtilities;public class MyJFrame extends JFrame {    public MyJFrame() {
             
            setVisible(true);
            AWTUtilities.setWindowOpaque(this, false);
            setSize(640,480);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }    public static void main(String[] args) {
            MyJFrame j = new MyJFrame();
        }
    }
      

  3.   

    import java.awt.*;
    import javax.swing.*;
    import com.sun.awt.AWTUtilities;public class MyJFrame extends JFrame {    public MyJFrame() {
            super("透明窗体");
            this.setLayout(new FlowLayout());
            this.add(new JButton("按钮"));
            this.add(new JCheckBox("复选按钮"));
            this.add(new JRadioButton("单选按钮"));
            this.add(new JProgressBar(20, 100));
            this.setSize(new Dimension(400, 300));
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            // this.setUndecorated(true);
        }    public static void main(String[] args) {
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    Window w = new MyJFrame();                com.sun.awt.AWTUtilities.setWindowOpacity(w, 0.63f);
                    w.setVisible(true);
                }
            });
        }
    }
      

  4.   

    我确保我完全复制你的代码,可是还是编译的时候出了一大堆的错误,难不成真是我的编译器的问题么?
    最新版本的NETBEAN应该不会有问题啊
      

  5.   

    请问你用的是什么编译器?
    我不管用NetBeans还是myeclipse都会提出如下错误,
    把那句实现透明的com.sun.awt.AWTUtilities.setWindowOpacity(w, 0.63f);去掉就没问题,run:
    Exception in thread "AWT-EventQueue-0" java.awt.IllegalComponentStateException: The frame is decorated
    at java.awt.Frame.setOpacity(Frame.java:960)
    at java.awt.Window$1.setOpacity(Window.java:4008)
    at com.sun.awt.AWTUtilities.setWindowOpacity(AWTUtilities.java:174)
    at newpackage.MyJFrame$1.run(MyJFrame.java:26)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:694)
    at java.awt.EventQueue$3.run(EventQueue.java:692)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:703)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
      

  6.   

    你能把你构建好的jar文件发给我吗?我看能不能正常运行,看看是我系统问题还是编译器问题。
      

  7.   

    我的是win7,JDK1.7为什么支持不了
      

  8.   

    大神能不能加我Q568553473帮我下,我刚换XP系统用NetBeans7.4也不行,不知道你是怎么弄的
    我百度下也几乎没有多少人搞这个,别人好像也没这情况。
    到贴吧问也没人懂,
    我换宿友的电脑编译也不可以,我快疯了,大神帮帮忙啊