总结:我们通常实现添加背景图片很容易,但是再添加按钮组件就会覆盖图片。原因是:
有先后啊。setlayout();与布局有很大关系
请调试代码的时候,仔细揣摩。我晕了
还可以添加文本框,密码框
frame.getcontantpane().add(new JPasswordField(15));
frame.getcontantpane().add(new JButton(""3424));frame.getcontantpane().add(new JTextFiled(32));
import javax.swing.JFrame;
import java.awt.Container;
import java.awt.FlowLayout;
//添加按钮。按钮不覆盖背景
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JButton;
import java.awt.BorderLayout;public class cd {public static void main(String[] args) {
JFrame frame = new JFrame();
Container c = new Container();
ImageIcon image = new ImageIcon("D:\\21.jpg");
JLabel imagelabel = new JLabel(image);
imagelabel.setBounds(0, 0, image.getIconWidth(), image.getIconHeight());
frame.getLayeredPane().add(imagelabel, new Integer(Integer.MIN_VALUE));
// ((JPanel)frame.getContentPane()).setOpaque(false);
// ((JPanel)c).setOpaque(false);
JPanel panel = (JPanel) frame.getContentPane();// 面板窗格化
panel.setOpaque(false);
// 一下是很重要的两行。
panel.setLayout(new FlowLayout());// 这里需要重新排列位置//一定要排在JPanel的后面,否则组件被覆盖
panel.add(new JButton("fsa"));// 添加按钮组件
frame.getContentPane().add(new JButton("娃娃"));
frame.getContentPane().add(new JButton("lll"));
frame.setBounds(0, 0, image.getIconWidth(), image.getIconHeight());
frame.setVisible(true);
// 默人是网格布局、不排列位置,组件会填充整个容器
// frame.setLayout(null);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}