3、布局管理器
- 流式布局
代码:
package com.edwin.lession01;
import java.awt.*;
/**
* @author EdwinD
* @create 2020.08.16 下午 09:29
* @desc
**/
public class TextFlowLayout {
public static void main(String[] args) {
Frame frame = new Frame();
// 尝试组件:按钮。
Button button1 = new Button("Button1");
Button button2 = new Button("Button2");
Button button3 = new Button("Button3");
// 设置为流式布局,默认为居中.
frame.setLayout(new FlowLayout());
// frame.setLayout(new FlowLayout(FlowLayout.LEFT));
// frame.setLayout(new FlowLayout(FlowLayout.RIGHT));
frame.setSize(277, 277);
frame.add(button1);
frame.add(button2);
frame.add(button3);
frame.setVisible(true);
}
}
效果:
不论如何拖动,三个按钮都会是居中显示。
- 东西南北中布局
布局思想原理:
代码:
package com.edwin.lession01;
import java.awt.*;
/**
* @author EdwinD
* @create 2020.08.16 下午 09:58
* @desc
**/
public class TextBorderLayout {
public static void main(String[] args) {
Frame frame = new Frame("TextBorderLayout");
Button east = new Button("East");
Button west = new Button("West");
Button north = new Button("North");
Button south = new Button("South");
Button center = new Button("Center");
frame.add(center,BorderLayout.CENTER);
frame.add(east,BorderLayout.EAST);
frame.add(west,BorderLayout.WEST);
frame.add(north,BorderLayout.NORTH);
frame.add(south,BorderLayout.SOUTH);
frame.setSize(277, 277);
frame.setVisible(true);
}
}
输出效果:
- 表格布局
代码:
package com.edwin.lession01;
import java.awt.*;
/**
* @author EdwinD
* @create 2020.08.16 下午 10:12
* @desc
**/
public class TextGridLayout {
public static void main(String[] args) {
Frame frame = new Frame("TextGridLayout");
Button but1 = new Button("but1");
Button but2 = new Button("but2");
Button but3 = new Button("but3");
Button but4 = new Button("but4");
Button but5 = new Button("but5");
Button but6 = new Button("but6");
Button but7 = new Button("but7");
frame.setLayout(new GridLayout(3, 3));
frame.add(but1);
frame.add(but2);
frame.add(but3);
frame.add(but4);
frame.add(but5);
frame.add(but6);
frame.add(but7);
frame.setSize(277, 277);
frame.setVisible(true);
}
}
输出:
4、课堂练习
package com.edwin.lession01;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
/**
* @author EdwinD
* @create 2020.08.16 下午 10:21
* @desc
**/
public class TextLayout {
public static void main(String[] args) {
Frame frame = new Frame("TextLayout");
Panel panel1 = new Panel(new BorderLayout());
Panel panel2 = new Panel(new GridLayout(2,1));
Panel panel3 = new Panel(new BorderLayout());
Panel panel4 = new Panel(new GridLayout(2,2));
frame.setVisible(true);
frame.setBackground(Color.blue);
frame.setBounds(500, 500, 400, 300);
frame.setResizable(false);
frame.setLayout(new GridLayout(2,1));
panel1.add(new Button("WEST-1"),BorderLayout.WEST);
panel1.add(new Button("EAST-1"), BorderLayout.EAST);
panel2.add(new Button("Cen1"));
panel2.add(new Button("Cen2"));
panel1.add(panel2,BorderLayout.CENTER);
panel3.add(new Button("WEST-2"),BorderLayout.WEST);
panel3.add(new Button("EAST-2"), BorderLayout.EAST);
for (int i = 0; i < 4; i++) {
panel4.add(new Button("for-" + i));
}
panel3.add(panel4, BorderLayout.CENTER);
frame.add(panel1);
frame.add(panel3);
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}
输出:
小结
(1)Frame是一个顶级窗口。
(2)Panel无法单独显示,必须添加到某一个容器中。
(3)布局管理器:
- 流式布局
- 东西南北中布局
- 表格布局
(4)每一个元素的大小,定位,背景色,可见性以及是否使用监听。
路漫漫其修远兮,吾将上下而求索。
参考文献
《【狂神说Java】GUI编程入门到游戏实战》
视频链接
2020.08.18