【发布时间】:2017-07-01 23:20:43
【问题描述】:
我想制作一个具有透明框架和非透明子级的覆盖窗口。我在制作透明窗口时成功了,甚至在添加测试子项以查看它是否有效时也成功了。但是,一旦我用我的paintComponent 替换了那个测试代码……我就会得到一个白色的背景。有谁知道为什么?
package blahh;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;;
public class LoadingFrame {
public static void main(String[] args) {
LoadingFrame Class = new LoadingFrame();
Class.frameChar();
}
public void frameChar(){
JFrame frame = new JFrame();
B b = new B();
frame.setUndecorated(true);
frame.setBackground(new Color(0, 0, 0, 0));
frame.setAlwaysOnTop(true);
frame.setPreferredSize(new Dimension(500, 500));
frame.getContentPane().setLayout(new java.awt.BorderLayout());
frame.setLocationRelativeTo(null);
frame.setVisible(true);
//frame.getContentPane().add(new JLabel("test code");
frame.add(b);
frame.pack();
}
public class B extends JPanel{
public void paintComponent(Graphics g){
super.paintComponent(g);
g.drawRect(0, 0, 100, 100);
}
}
}
【问题讨论】:
-
你的面板默认是不透明的,构建时考虑调用
setOpaque(false) -
啊,你明白了!你是个天才。感谢您的帮助!
标签: java jframe transparent paintcomponent