import javax.swing.*;import java.awt.*;public class test extends JFrame{
public test()
{
JLabel jl=new JLabel(new ImageIcon("Image/a.jpg"));
jl.setBounds(0, 0, 300, 300);
JButton jb=new JButton("jbutton");
JTextField jt=new JTextField(8);
((JPanel)this.getContentPane()).setOpaque(false);
JPanel jp=new JPanel();
jp.setOpaque(false);
jp.add(jb);
jp.add(jt);
this.getLayeredPane().add(jl,new Integer(Integer.MIN_VALUE));
this.add(jp);
this.setSize(300,300);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLocation(300,200);
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new test();
}}这段代码 可以实现在背景上添加组件
但是 对于这句 ((JPanel)this.getContentPane()).setOpaque(false); 我不太理解
这句是用来干嘛的 是设置 JPanel的透明吗 我在后面定义JPanel 的时候
JPanel jp=new JPanel(); jp.setOpaque(false); 也设置了 透明 这两者有联系吗
我删掉任意一条 程序都不能实现原先的功能 请帮忙解释一下
public test()
{
JLabel jl=new JLabel(new ImageIcon("Image/a.jpg"));
jl.setBounds(0, 0, 300, 300);
JButton jb=new JButton("jbutton");
JTextField jt=new JTextField(8);
((JPanel)this.getContentPane()).setOpaque(false);
JPanel jp=new JPanel();
jp.setOpaque(false);
jp.add(jb);
jp.add(jt);
this.getLayeredPane().add(jl,new Integer(Integer.MIN_VALUE));
this.add(jp);
this.setSize(300,300);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLocation(300,200);
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new test();
}}这段代码 可以实现在背景上添加组件
但是 对于这句 ((JPanel)this.getContentPane()).setOpaque(false); 我不太理解
这句是用来干嘛的 是设置 JPanel的透明吗 我在后面定义JPanel 的时候
JPanel jp=new JPanel(); jp.setOpaque(false); 也设置了 透明 这两者有联系吗
我删掉任意一条 程序都不能实现原先的功能 请帮忙解释一下
你自己想一下,两个JPanel叠在一起,任何一个不设置透明度,是不是和没效果一样?两个都是透明了才有效果,要么是顶层的挡住了,要么是下层的挡住.
给你两块玻璃,叠一起的话.....必须两块都透明吧?
JLabel jl=new JLabel(new ImageIcon("c:\\a.jpg"));
jl.setBounds(0, 0, 300, 300);
JButton jb=new JButton("jbutton");
JTextField jt=new JTextField(8); //((JPanel)this.getContentPane()).setOpaque(false); JPanel jp=new JPanel();
jp.setOpaque(false);
this.setContentPane(jp);
jp.add(jb);
jp.add(jt);
this.getLayeredPane().add(jl,new Integer(Integer.MIN_VALUE));
//this.add(jp); this.setSize(300,300);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLocation(300,200);