JLayeredPane階層の問題

2587 ワード

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class JLayeredPaneDemo1 extends JFrame {

	public JLayeredPaneDemo1(){
		super("JLayeredPaneDemo1");
		Integer[] layerConstants = {JLayeredPane.DEFAULT_LAYER,JLayeredPane.PALETTE_LAYER,new Integer(101),
				JLayeredPane.MODAL_LAYER,new Integer(201),JLayeredPane.POPUP_LAYER,JLayeredPane.DRAG_LAYER};
		
		Color[] colors = {Color.red,Color.blue,Color.magenta,Color.cyan,Color.yellow,Color.green,Color.pink};
		
		Point position = new Point(10,10);
		
		JLabel[] labels = new JLabel[7];
		JLayeredPane layeredPane = this.getLayeredPane();
		JLabel temp_label = new JLabel("content pane");
		temp_label.setBounds(100,100,400,400);
		temp_label.setOpaque(true);
		this.getContentPane().add(temp_label);
		layeredPane.add(temp_label);// content pane temp_label
		for(int i=0;i<7;i++){
			labels[i] = createLabel(" "+(i+1)+" ",colors[i],position);
			position.x = position.x+20;
			position.y = position.y+20;
			layeredPane.add(labels[i],layerConstants[i]);
		}
		this.setSize(new Dimension(500,500));
		
		JButton button1 = new JButton("button1");
		button1.setOpaque(true);
		button1.setBackground(Color.black);
		button1.setForeground(Color.blue);
		button1.setBounds(new Rectangle(0,0,200,200));
		
		JButton button2 = new JButton("button2");
		button2.setOpaque(true);
		button2.setBackground(Color.green);
		button2.setForeground(Color.red);
		button2.setBounds(new Rectangle(100,100,200,200));//setBounds , 。 content pane Bounds
		
		layeredPane.add(button1,new Integer(10),1);
		layeredPane.add(button2,new Integer(10),-1);
		
		this.setVisible(true);
		this.addWindowListener(new WindowAdapter(){
			@Override
			public void windowClosing(WindowEvent e){
				System.exit(0);
			}
		});
		
	}
	
	public JLabel createLabel(String content,Color color,Point position){
		JLabel label = new JLabel(content,JLabel.CENTER);
		label.setVerticalAlignment(JLabel.TOP);
		label.setBackground(color);
		label.setOpaque(true);
		label.setBounds(position.x,position.y,100,100);
		return label;
	}
	
	public static void main(String...args){
		new JLayeredPaneDemo1();
	}
}

参考:Java Swingプログラミングの詳細