package test;
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
public class LayeredPan2 extends JFrame{
public LayeredPan2() {
Container contentpane = getContentPane();
contentpane.setLayout(new GridLayout(2, 2));
setSize(400, 400);
setVisible(true); Color[] colors = {Color.red, Color.blue, Color.magenta, Color.cyan,
Color.yellow, Color.green, Color.pink};
Integer[] layerconstants = {new Integer( -100), JLayeredPane.PALETTE_LAYER,new Integer(101), JLayeredPane.MODAL_LAYER,new Integer(201),
JLayeredPane.POPUP_LAYER, JLayeredPane.DRAG_LAYER};
Point positision = new Point(10, 10);
JLayeredPane layeredpane = getLayeredPane();
JButton[] bts = new JButton[7];
for (int i = 0; i < 7; i++) {
bts[i] = creatbutton("button"+(i+1), colors[i], positision);
positision.x = positision.x + 20;
positision.y = positision.y + 20;
layeredpane.add(bts[i], layerconstants[i]);
}
JButton bt1 = new JButton("按钮一");
JButton bt2 = new JButton("按钮二");
JButton bt3 = new JButton("按钮三");
JButton bt4 = new JButton("按钮四");
contentpane.add(bt1);
contentpane.add(bt2);
contentpane.add(bt3);
contentpane.add(bt4); System.out.println("contentpane 的层次值为:" +layeredpane.getLayer(contentpane));
System.out.println("按钮一的层次值为:" + layeredpane.getLayer(bt1));
System.out.println("按钮二的层次值为:" + layeredpane.getLayer(bt2));
System.out.println("bts[0]的层次值为:" + layeredpane.getLayer(bts[0]));
System.out.println("bts[1]的层次值为:" + layeredpane.getLayer(bts[1]));
System.out.println("bts[2]的层次值为:" + layeredpane.getLayer(bts[2]));
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
}); } public JButton creatbutton(String content, Color color, Point positision) {
JButton newbt = new JButton(content);
newbt.setVerticalAlignment(JButton.TOP);
newbt.setBackground(color);
newbt.setForeground(Color.black);
newbt.setBounds(positision.x,positision.y,100,100);
return newbt; }
public static void main(String args[]){
new LayeredPan2();
}
}
我执行后,那几个在contentpane上的按钮总是要最大化后才显示,这是为什么?
还有数组Integer我编程int 后就不行了,请问两者有什么区别啊?
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
public class LayeredPan2 extends JFrame{
public LayeredPan2() {
Container contentpane = getContentPane();
contentpane.setLayout(new GridLayout(2, 2));
setSize(400, 400);
setVisible(true); Color[] colors = {Color.red, Color.blue, Color.magenta, Color.cyan,
Color.yellow, Color.green, Color.pink};
Integer[] layerconstants = {new Integer( -100), JLayeredPane.PALETTE_LAYER,new Integer(101), JLayeredPane.MODAL_LAYER,new Integer(201),
JLayeredPane.POPUP_LAYER, JLayeredPane.DRAG_LAYER};
Point positision = new Point(10, 10);
JLayeredPane layeredpane = getLayeredPane();
JButton[] bts = new JButton[7];
for (int i = 0; i < 7; i++) {
bts[i] = creatbutton("button"+(i+1), colors[i], positision);
positision.x = positision.x + 20;
positision.y = positision.y + 20;
layeredpane.add(bts[i], layerconstants[i]);
}
JButton bt1 = new JButton("按钮一");
JButton bt2 = new JButton("按钮二");
JButton bt3 = new JButton("按钮三");
JButton bt4 = new JButton("按钮四");
contentpane.add(bt1);
contentpane.add(bt2);
contentpane.add(bt3);
contentpane.add(bt4); System.out.println("contentpane 的层次值为:" +layeredpane.getLayer(contentpane));
System.out.println("按钮一的层次值为:" + layeredpane.getLayer(bt1));
System.out.println("按钮二的层次值为:" + layeredpane.getLayer(bt2));
System.out.println("bts[0]的层次值为:" + layeredpane.getLayer(bts[0]));
System.out.println("bts[1]的层次值为:" + layeredpane.getLayer(bts[1]));
System.out.println("bts[2]的层次值为:" + layeredpane.getLayer(bts[2]));
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
}); } public JButton creatbutton(String content, Color color, Point positision) {
JButton newbt = new JButton(content);
newbt.setVerticalAlignment(JButton.TOP);
newbt.setBackground(color);
newbt.setForeground(Color.black);
newbt.setBounds(positision.x,positision.y,100,100);
return newbt; }
public static void main(String args[]){
new LayeredPan2();
}
}
我执行后,那几个在contentpane上的按钮总是要最大化后才显示,这是为什么?
还有数组Integer我编程int 后就不行了,请问两者有什么区别啊?
放在类的最后就可以了啊
updateUI()放在后就可以了啊