Java JLayeredPane来实现窗口背景图片 (三)

2014-11-24 10:16:48 · 作者: · 浏览: 1
), Color.RED));
layeredPane.setBorder(BorderFactory.createTitledBorder("" +
"layeredPane" +
"
"));
Dimension dimension = new Dimension(300, 310);
layeredPane.setPreferredSize(dimension);

final JPanel panelBg = new JPanel();
final Image imageBg = Toolkit.getDefaultToolkit()
.getImage(this.getClass().getResource("/images/Lighthouse.jpg"));
ImageIcon imageIcon = new ImageIcon(imageBg.getScaledInstance
(dimension.width, dimension.height, Image.SCALE_FAST));
final JLabel bg = new JLabel(imageIcon);
final Point origin = new Point(10, 30);
final Rectangle rectangle = new Rectangle(origin, dimension);
panelBg.setBounds(rectangle);
panelBg.add(bg);

final JPanel panelContent = new JPanel();
JButton button = new JButton("button 1");
JButton button2 = new JButton("button 2");
JButton button3 = new JButton("button 3");
panelContent.setBounds(rectangle);
panelContent.setOpaque(false); // 设置为透明
panelContent.add(button);
panelContent.add(button2);
panelContent.add(button3);

layeredPane.add(panelBg, new Integer(0)); // the same to layeredPane.add(panelBg);
layeredPane.add(panelContent, new Integer(1));

container.add(layeredPane, BorderLayout.CENTER);

addComponentListener(new ComponentAdapter() {
public void componentResized(ComponentEvent e) {
// System.out.println(layeredPane.getSize()); //此处必须用getSize()而不是用getPreferredSize()
// System.out.println(layeredPane.getPreferredSize());
Dimension dimensionNew = layeredPane.getSize();
Rectangle rectangleNew = new Rectangle(origin, dimensionNew);
panelBg.setBounds(rectangleNew);
panelContent.setBounds(rectangleNew);
bg.setIcon(new ImageIcon(imageBg.getScaledInstance
(dimensionNew.width, dimensionNew.height, Image.SCALE_FAST)));
}
});
}

/**
* @param args
* @throws Exception
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
JLayeredPane_1 frame = new JLayeredPane_1();
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}

}