javax.swing.JLayeredPane 用例
前言
类声明:
public class JLayeredPane extends JComponent implements Accessible {
设置层的方法
1 , add(component) 后 setLayer(component, 层号 );
2 , 直接add(component , Integer.valueOf(层号)); 不能直接用 int
用例2205262045
package panePanel;
import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;
import javax.swing.*;
public class JLayeredPaneTest2205262045 {
static void pln() {System.out.println();}
static void pln(Object o) {System.out.println(o);}
static void pln(Object o1, Object o2) {pln(o1+" 的结果是 "+o2);}
static Frame frame = new Frame("LayeredPaneTest");
static {
frame.addWindowListener(new WindowAdapter() {@Override public void windowClosing(WindowEvent event) {frame.dispose();System.exit(0);}});
frame.setBounds(100,50,1600,900);
}
public static void main(String...arguments) {
JLayeredPane jLayeredPane = new JLayeredPane(); frame.add(jLayeredPane);
System.out.println(jLayeredPane.getLayout());
// jLayeredPane.setLayout(new FlowLayout());
ArrayList<JLabel> jlbAl = new ArrayList<>();
for(int c=0;c<30;c++) {
JLabel jlb = new JLabel("JLabel-"+c, JLabel.CENTER); jlbAl.add(jlb); jlb.setPreferredSize(new Dimension(100,100));
jlb.setBackground(rdmColor()); jlb.setForeground(Color.RED); jlb.setOpaque(true);
jlb.setBounds(50*c, 25*c, 100, 50); //在无layout时起作用, 有layout时无作用
jlb.setPreferredSize(new Dimension(100,100)); //没有layout则不起作用, 有layout时起作用
if(c<10) {jLayeredPane.add(jlb); jLayeredPane.setLayer(jlb, c); }
else if(c<20){jLayeredPane.add(jlb); jLayeredPane.setLayer(jlb, -c); }
else {jLayeredPane.add(jlb, Integer.valueOf(c)); } //如果想在add时直接设置层, 要将int转为Integer , 调用 add(Component, Object)方法
}
frame.setVisible(true);
}
static Color rdmColor() { return new Color((int) (Math.random()*256*256*256)); }
}