先看API:
public void setOpaque(boolean isOpaque)
如果为 true,则该组件绘制其边界内的所有像素。否则该组件可能不绘制部分或所有像素,从而允许其底层像素透视出来。
对于 JComponent 而言,此属性的默认值是 false。但是对于大多数标准的 JComponent 子类(如 JButton 和 JTree),此属性的默认值与外观有关。
参数: isOpaque - 如果此组件应该是不透明的,则为 true
Opaque是不透明的意思,当设置为false时,组件是透明的,可显示下方的组件。下面是测试用例:
importjava.awt.Color;importjava.awt.Dimension;importjava.awt.FlowLayout;importjavax.swing.BorderFactory;importjavax.swing.JFrame;importjavax.swing.JPanel;/** 2015-06-15*/
public class SetOpaqueDemo extendsJFrame {publicSetOpaqueDemo() {super("setOpaqueDemo");
setSize(400, 200);
setDefaultCloseOperation(EXIT_ON_CLOSE);//不透明,看到黑色顶层
JPanel opaquePanel = createNested(true);//透明,露出白色底层
JPanel notOpaque = createNested(false);
getContentPane().setLayout(newFlowLayout());
getContentPane().add(opaquePanel);
getContentPane().add(notOpaque);
}public JPanel createNested(booleanopaque) {
JPanel outer= new JPanel(newFlowLayout());
JPanel inner= new JPanel(newFlowLayout());//底层panel为白色,顶层为黑色
outer.setBackground(Color.white);
inner.setBackground(Color.black);
inner.setOpaque(opaque);
inner.setBorder(BorderFactory.createLineBorder(Color.gray));
inner.setPreferredSize(new Dimension(40, 20));
outer.add(inner);returnouter;
}public static voidmain(String[] args) {
SetOpaqueDemo setOpaqueDemo= newSetOpaqueDemo();
setOpaqueDemo.setVisible(true);
}
}
运行效果如下图所示:
运行效果图
可见,setOpaque(false)使panel变成了透明效果。
原文:http://www.cnblogs.com/pzy4447/p/4579360.html