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

求教Java 控件的透明设置
比如我我定义了一个Frame:TestFrame
和一个Panel:TestPanel
然后我把这个Panel的背景设置成一张图片

接下来我向TestPanel添加一些其他的控件,比如:List,JSlider。。。。
这样这些控件就把TestPanel给覆盖了

有什么方法可以避免这种覆盖呢?
我试了setOpaque(false); 这个方法 ,但是不起作用

小弟刚接触java,还请那位大牛帮忙看下!先谢谢!

------解决方案--------------------
不同控件有不同的设置透明的方式.以下给出几个常用的例子.
JLabel 直接设置 label.setOpaque(false); 即可

JButton: 需要如下处理
button.setOpaque(false);
button.setContentAreaFilled(false); 
但是这样透明后没有了点击效果.需要自行处理一下几个地方
pressedIcon
selectedIcon
disabledSelectedIcon
disabledIcon
自行处理按钮效果.

JList: 做如下处理
jList1=new JList();

jList1.setOpaque(false); 
jList1.setCellRenderer(new DefaultListCellRenderer() {
@Override
public Component getListCellRendererComponent(JList jlist, Object o, int i, boolean bln, boolean bln1) {
Component listCellRendererComponent = super.getListCellRendererComponent(jlist, o, i, bln, bln1);
JLabel label=(JLabel) listCellRendererComponent;
label.setOpaque(false);
return label;
}
});


------解决方案--------------------
DefaultListModel mod=new DefaultListModel();
JList list=new JList();
list.setModel(mod);

mod.addElement("String1");
mod.addElement("String2");
mod.addElement("String3");

Jlist所有数据操作都是通过Model来处理的. list只用于显示数据.