java.awt.BorderLayout
类定义
public class BorderLayout implements LayoutManager2,
java.io.Serializable {
interface👇 interface👇 LayoutManager ▶ LayoutManager2 ▶ BorderLayout
概述
- BorderLayout分为东西南北中五个区, 每个区只能添加一个java.awt.Component
- 放在那个区可以由add(Component , Object)的第二个参数决定, 是一个String
- 东区 BorderLayout.EAST 对应 "East"
- 西区 BorderLayout.WEST 对应 "West"
- 南区 BorderLayout.SOUTH 对应 "South"
- 北区 BorderLayout.NORTH 对应 "North"
- 中区 BorderLayout.CENTER 对应 "Center"
- 可以设置行距 如 BorderLayoutInstance.setHgap(200);
- 可以设置列距 如 BorderLayoutInstance.setVgap(100);
- 子Component的setPreferredSize(Dimension preferredSize) 在 南北 时 height起作用
- 子Component的setPreferredSize(Dimension preferredSize) 在 东西 时 width起作用
默认样式
package layout;
import java.awt.*;
import java.awt.event.*;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import javax.swing.*;
@SuppressWarnings({ "removal", "deprecation" })
public class BorderLayout东西南北中 {
static Frame frame = new Frame(Thread.currentThread().getStackTrace()[1].getClassName());
static JLabel East, West, South, North, Center;
static {
frame.addWindowListener(new WindowAdapter() {@Override public void windowClosing(WindowEvent event) {frame.dispose();System.exit(0);}});
frame.setBounds(100, 50, 600, 480);
try {
Class<?> cl = new SecurityManager() {public Class<?> wantClass(){return getClassContext()[1];}}.wantClass();
Field fields[] = cl.getDeclaredFields();
for(int i=0;i<fields.length;i++) {
Field field = fields[i];
if(fields[i].getModifiers()==Modifier.STATIC && field.getType()==JLabel.class) {
field.set(null, new JLabel(field.getName()));
JLabel jlb = (JLabel)field.get(null);
jlb.setBackground(new Color((int) (Math.random()*255*255*255))); jlb.setOpaque(true);
jlb.setHorizontalAlignment(JLabel.CENTER); jlb.setVerticalAlignment(0);
// jlb.setPreferredSize(new Dimension(200, 200));
frame.add(jlb, jlb.getText());
}
}
}catch(Exception ex) {ex.printStackTrace();}
}
public static void main(String...arguments) {
frame.setVisible(true);
}
}
borderLayout.setHgap(200); borderLayout.setVgap(100);
package layout;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class BorderLayout2205271446 {
static Frame frame = new Frame("BorderLayout2205271446");
static BorderLayout borderLayout = (BorderLayout) frame.getLayout(); //Frame默认自带BorderLayout
static JLabel jlb;
static {
frame.addWindowListener(new WindowAdapter() {@Override public void windowClosing(WindowEvent event) {frame.dispose();System.exit(0);}});
frame.setBounds(new Rectangle(100, 50, 1600, 900));
borderLayout.setHgap(200); borderLayout.setVgap(100);
String titleAr[] = new String[] {"东" , "西" ,"南" ,"北" ,"中"};
Color colorAr[] = new Color[] {Color.RED, Color.ORANGE, Color.yellow, Color.GREEN , Color.CYAN};
String areaAr[] = new String[] {BorderLayout.EAST, BorderLayout.WEST, BorderLayout.SOUTH, BorderLayout.NORTH, BorderLayout.CENTER};
Font font = new Font("宋体", Font.CENTER_BASELINE, 30);
for(int i=0; i<areaAr.length; i++) {
jlb = new JLabel(titleAr[i]); jlb.setBackground(colorAr[i]); jlb.setOpaque(true); jlb.setFont(font);
jlb.setHorizontalAlignment(JLabel.CENTER); jlb.setVerticalAlignment(JLabel.CENTER);
frame.add(jlb, areaAr[i]);
}
}
public static void main(String...arguments) {frame.setVisible(true);}
}
东西南北中都 setPreferredSize(new Dimension(200, 200));
package layout;
import java.awt.*;
import java.awt.event.*;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import javax.swing.*;
@SuppressWarnings({ "removal", "deprecation" })
public class BorderLayout东西南北中 {
static Frame frame = new Frame(Thread.currentThread().getStackTrace()[1].getClassName());
static JLabel East, West, South, North, Center;
static {
frame.addWindowListener(new WindowAdapter() {@Override public void windowClosing(WindowEvent event) {frame.dispose();System.exit(0);}});
frame.setBounds(100, 50, 600, 480);
try {
Class<?> cl = new SecurityManager() {public Class<?> wantClass(){return getClassContext()[1];}}.wantClass();
Field fields[] = cl.getDeclaredFields();
for(int i=0;i<fields.length;i++) {
Field field = fields[i];
if(fields[i].getModifiers()==Modifier.STATIC && field.getType()==JLabel.class) {
field.set(null, new JLabel(field.getName()));
JLabel jlb = (JLabel)field.get(null);
jlb.setBackground(new Color((int) (Math.random()*255*255*255))); jlb.setOpaque(true);
jlb.setHorizontalAlignment(JLabel.CENTER); jlb.setVerticalAlignment(0);
jlb.setPreferredSize(new Dimension(200, 200));
frame.add(jlb, jlb.getText());
}
}
}catch(Exception ex) {ex.printStackTrace();}
}
public static void main(String...arguments) {
frame.setVisible(true);
}
}
同时设置 Vgap Hgap PreferredSize
package layout;
import java.awt.*;
import java.awt.event.*;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import javax.swing.*;
@SuppressWarnings({ "removal", "deprecation" })
public class BorderLayout东西南北中 {
static Frame frame = new Frame(Thread.currentThread().getStackTrace()[1].getClassName());
static BorderLayout borderLayout = (BorderLayout) frame.getLayout(); //Frame默认自带BorderLayout
static JLabel East, West, South, North, Center;
static {
frame.addWindowListener(new WindowAdapter() {@Override public void windowClosing(WindowEvent event) {frame.dispose();System.exit(0);}});
frame.setBounds(100, 50, 600, 480);
borderLayout.setHgap(20); borderLayout.setVgap(10);
try {
Class<?> cl = new SecurityManager() {public Class<?> wantClass(){return getClassContext()[1];}}.wantClass();
Field fields[] = cl.getDeclaredFields();
for(int i=0;i<fields.length;i++) {
Field field = fields[i];
if(fields[i].getModifiers()==Modifier.STATIC && field.getType()==JLabel.class) {
field.set(null, new JLabel(field.getName()));
JLabel jlb = (JLabel)field.get(null);
jlb.setBackground(new Color((int) (Math.random()*255*255*255))); jlb.setOpaque(true);
jlb.setHorizontalAlignment(JLabel.CENTER); jlb.setVerticalAlignment(0);
jlb.setPreferredSize(new Dimension(200, 200));
frame.add(jlb, jlb.getText());
}
}
}catch(Exception ex) {ex.printStackTrace();}
}
public static void main(String...arguments) {
frame.setVisible(true);
}
}