写了一个图书管理系统,希望借此熟悉Java的界面和数据库操作,在制作界面时想要添加一个带背景的容器,最开始在网上查的都是在JFLabel里添加图片,添加上了完全达不到想要的效果。

        后来学习到将图片重绘到一个JPanel容器中,将这个图片的容器加入到面板中,再向这个容器中添加其他组件。但是添加后发现在这个面板中添加容器的话是会把装图片的容器完全遮盖住的。


        经过查找资料,可以用JLayeredPane分层容器,可以实现添加多层容器而不会完全遮盖下层容器。

       下面是代码:

public class FindMenu extends JFrame{
	private JLayeredPane layeredPane;
	public FindMenu() {
		setLayout(new GridLayout(1, 1));//将面板设置成网格布局,只定义一行一列,使图片充满整个面板,并可以随着面板的放大和缩小改变
		
		layeredPane = new JLayeredPane() {
			public void paintComponent(Graphics g) {//重写绘制面板的方法
				super.paintComponent(g);
				ImageIcon image = new ImageIcon("src/find.png");//导入图片
				image.setImage(image.getImage().getScaledInstance(this.getWidth(), this.getHeight(), Image.SCALE_AREA_AVERAGING));//设置图片大小跟随面板大小
				g.drawImage(image.getImage(), 0, 0, this);//重新绘制面板
			}
		};
		
        //添加其他容器时,将其添加到不同的层,达到不遮盖其他容器的目的
		//layeredPane.add(JPanel, new Integer(200));
		add(layeredPane);
	}
}

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐