总结:我们通常实现添加背景图片很容易,但是再添加按钮组件就会覆盖图片。原因是:
有先后啊。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); } }