日期:2014-05-20  浏览次数:20743 次

求救各位大神关于做JFrame不规则半透明窗口
今天在这个网站上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();
    }
}

------解决方案--------------------
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);
            }
        });
    }
}