AWT(Abstract Windows Toolkit)包含很多类和接口,用于Java Application的GUI编程
GUI的各种元素(窗口、按钮、文本框)由java类来实现
使用AWT所涉及的类一般在java.awt包及其子包中
container和component是AWT中的两个核心类
AWT的体系结构
setBounds(int x,int y,int width,int height) 设置窗口位置和大小,x,y是左上角坐标,width,height是宽度和高度
setSize(int width,int height) 设置窗口的大小
setLocation(int x,int y) 设置窗口的位置
setBackground(Color c) 设置窗口颜色
setVisible(Boolean b) 设置是否可见
setTitle(String name) 设置窗口名字
setResizable(Boolean b) 设置是否窗口可调大小
实例一
package GUI编程.frame;
import java.awt.*;
public class test01 {
public static void main(String[] args) {
Frame frame = new Frame("my first test");
frame.setLocation(10,20);
frame.setSize(100,100);
frame.setBackground(Color.red);
frame.setVisible(true); // 默认是false
}
}
Panel对象可以看作可以容纳component的空间
Panel对象可以拥有自己的布局管理器
Panel类拥有从其父类继承来的方法
Panel的构造方法
package GUI编程.Panel;
import java.awt.*;
public class test01 {
public static void main(String[] args) {
Frame frame = new Frame("test");
Panel panel = new Panel(null);
frame.setLayout(null);
frame.setBounds(300,300,500,500);
frame.setBackground(new Color(0,0,102));
panel.setBounds(50,50,400,400);
panel.setBackground(new Color(204,204,255));
frame.add(panel);
frame.setVisible(true);
}
}
new FlowLayout(FlowLayout.RIGHT,20,40) 右对齐,组件之间水平间距20像素,垂直间距40像素
new FlowLayout(FlowLayout.LEFT) 左对齐,水平和垂直间距为缺省值5
new FlowLayout() 使用缺省的居中对齐方式,水平和垂直间距为缺省值5
实例:
package GUI编程.layout布局管理器;
import java.awt.*;
public class test01 {
public static void main(String[] args) {
Frame frame = new Frame("fdsf");
Button button = new Button("one");
Button button1 = new Button("two");
Button button2 = new Button("three");
// 采用缺省值,居中,水平、垂直间距为5
frame.setLayout(new FlowLayout());
frame.add(button);
frame.add(button1);
frame.add(button2);
frame.setLocation(500,500);
frame.setSize(200,100);
frame.setVisible(true);
}
}
实例二
package GUI编程.layout布局管理器;
import java.awt.*;
public class test02 {
public static void main(String[] args) {
Frame frame = new Frame("test");
FlowLayout flowLayout = new FlowLayout(FlowLayout.CENTER,20,40);
frame.setLayout(flowLayout);
frame.setLocation(300,400);;
frame.setSize(300,200);;
frame.setBackground(Color.red);
for (int i=0;i<8;i++){
frame.add(new Button("btn" + i));
}
frame.setVisible(true);
}
}
实例一(未指定位置,默认添加在center,导致覆盖
package GUI编程.layout布局管理器;
import java.awt.*;
public class test03 {
public static void main(String[] args) {
Frame frame = new Frame("test");
Button button = new Button("east");
Button button1 = new Button("west");
Button button2 = new Button("north");
Button button3 = new Button("south");
Button button4 = new Button("center");
frame.add(button);
frame.add(button1);
frame.add(button2);
frame.add(button3);
frame.add(button4);
frame.setSize(200,200);;
frame.setVisible(true);
}
}
package GUI编程.layout布局管理器;
import java.awt.*;
public class test03 {
public static void main(String[] args) {
Frame frame = new Frame("test");
Button button = new Button("east");
Button button1 = new Button("west");
Button button2 = new Button("north");
Button button3 = new Button("south");
Button button4 = new Button("center");
frame.add(button,BorderLayout.EAST);
frame.add(button1,BorderLayout.WEST);
frame.add(button2,BorderLayout.NORTH);
frame.add(button3,BorderLayout.SOUTH);
frame.add(button4,BorderLayout.CENTER);
frame.setSize(200,200);;
frame.setVisible(true);
}
}
GirdLayout(3,4) 将区域划分为3行4列
实例一
package GUI编程.layout布局管理器;
import java.awt.*;
public class test04 {
public static void main(String[] args) {
Frame frame = new Frame("test");
frame.setLayout(new GridLayout(3,2));
for (int i=0;i<6;i++){
frame.add(new Button("btn" + i));
}
/**
* 这里没有设置窗口的大小,
* 通过pack()方法来使其自动适应
*/
frame.pack();
frame.setVisible(true);
}
}
练习:
package GUI编程.layout布局管理器;
import javafx.scene.layout.Pane;
import javax.swing.plaf.PanelUI;
import java.awt.*;
public class test05 {
public static void main(String[] args) {
Frame frame = new Frame("test");
frame.setSize(300,200);
frame.setLocation(500,500);
frame.setLayout(new GridLayout(2,1));
Panel panelUp = new Panel(new BorderLayout());
Panel panelDown = new Panel(new BorderLayout());
panelUp.add(new Button("btn"),BorderLayout.EAST);
panelUp.add(new Button("btn"),BorderLayout.WEST);
Panel panelUp_1 = new Panel(new GridLayout(2,1));
for (int i=0;i<2;i++){
panelUp_1.add(new Button("btn"));
}
panelUp.add(panelUp_1,BorderLayout.CENTER);
panelDown.add(new Button("btn"),BorderLayout.EAST);
panelDown.add(new Button("btn"),BorderLayout.WEST);
Panel panelDown_1 = new Panel(new GridLayout(2,4));
for (int i=0;i<2;i++){
for (int j=0;j<2;j++){
panelDown_1.add(new Button("btn"));
}
}
panelDown.add(panelDown_1,BorderLayout.CENTER);
frame.add(panelUp);
frame.add(panelDown);
frame.setVisible(true);
}
}
思路:先用GridLayout将整体分为上下两层,然后每一层使用BorderLayout分为左、中、右三块,中间在使用GridLayout分为上下两层,然后进行填充