Frame
- 一个界面容器,属于java.awt包
- 属于比较古老的编程,绝大多数情况下不会使用,但是对MVC有一定的启发作用
第一个GUI窗口界面
import java.awt.*;
//GUI的第一个界面
public class TestFrame {
public static void main(String[] args) {
//Frame 对于一个新的类学会查看源码而不是查看API会对自己有更大提升。
Frame frame = new Frame("我的第一个GUI窗口");
//设置可见性
frame.setVisible(true);
//设置窗口大小
frame.setSize(400,400);
//设置背景颜色 color
frame.setBackground(new Color(245, 245, 245, 255));
//设置窗口初始位置
frame.setLocation(200,200);
//设置窗口大小不可变
frame.setResizable(false);
}
}
import java.awt.*;
public class TestFrame2 {
public static void main(String[] args) {
//展示多个窗口
MyFrame myFrame = new MyFrame(100, 100, 300, 300, Color.black);
MyFrame myFrame2 = new MyFrame(400, 100, 300, 300, Color.blue);
MyFrame myFrame3 = new MyFrame(100, 400, 300, 300, Color.cyan);
MyFrame myFrame4 = new MyFrame(400, 400, 300, 300, Color.red);
}
}
class MyFrame extends Frame {
static int id=0;//可能会有多个窗口用于计数。
public MyFrame(int x,int y,int h,int w,Color color){
super("MyFrame"+(++id));
setBackground(color);
setBounds(x,y,h,w);
setVisible(true);
}
}
Panel
frame容器中的一个面板,个frame基本一样但是不能单独存在,需要依托Panel而存在。
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
//Panel 可以看成一个空间 但是不能单独存在
public class TestPanel {
public static void main(String[] args) {
Frame frame = new Frame("JPanel");
Panel panel = new Panel();
//设置布局
frame.setLayout(null);
//frame坐标,背景颜色
frame.setBounds(300,300,500,500);
frame.setBackground(new Color(18, 149, 159));
//panel坐标,背景颜色
panel.setBounds(50,50,400,400);
panel.setBackground(new Color(171, 11, 132));
//add方法
frame.add(panel);
frame.setVisible(true);
//监听事件,监听关闭事件 System.exit(0);
//适配器模式:
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}
流式布局
import java.awt.*;
public class TestFlowLayout {
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.setSize(333,333);
//添加按钮
frame.add(button1);
frame.add(button2);
frame.add(button3);
frame.setVisible(true);
}
}
Border布局
import java.awt.*;
public class TestBorderLayout {
public static void main(String[] args) {
Frame frame = new Frame("TestBorderLayout");
Button east = new Button("East");
Button west = new Button("West");
Button south = new Button("South");
Button north = new Button("North");
Button center = new Button("Center");
frame.add(east,BorderLayout.EAST);
frame.add(west,BorderLayout.WEST);
frame.add(south,BorderLayout.SOUTH);
frame.add(north,BorderLayout.NORTH);
frame.add(center,BorderLayout.CENTER);
frame.setSize(200,200);
frame.setVisible(true);
}
}
表格布局 Grid
import java.awt.*;
public class TestGridLayout {
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");
Button button4 = new Button("button4");
Button button5 = new Button("button5");
Button button6 = new Button("button6");
frame.setLayout(new GridLayout(3,2));
frame.add(button1);
frame.add(button2);
frame.add(button3);
frame.add(button4);
frame.add(button5);
frame.add(button6);
frame.setVisible(true);
frame.pack();//自动设置最优大小
}
}
案例
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class TestNestedLayout {
public static void main(String[] args) {
Frame frame = new Frame("嵌套布局");
Button button1 = new Button("button");
Button button2 = new Button("button");
Button button3 = new Button("button");
Button button4 = new Button("button");
Button button5 = new Button("button");
Button button6 = new Button("button");
Button button7 = new Button("button");
Button button8 = new Button("button");
Button button9 = new Button("button");
Button button10 = new Button("button");
frame.setLayout(new GridLayout(2,1));
Panel panel = new Panel();
Panel panel1 = new Panel();
frame.add(panel);
frame.add(panel1);
Panel panel2 = new Panel();
Panel panel3 = new Panel();
panel.setLayout(new BorderLayout());
panel.add(button1,BorderLayout.EAST);
panel.add(button2,BorderLayout.WEST);
panel.add(panel2,BorderLayout.CENTER);
panel1.setLayout(new BorderLayout());
panel1.add(button3,BorderLayout.EAST);
panel1.add(button4,BorderLayout.WEST);
panel1.add(panel3,BorderLayout.CENTER);
panel2.setLayout(new GridLayout(2,1));
panel2.add(button5);
panel2.add(button6);
panel3.setLayout(new GridLayout(2,2));
panel3.add(button7);
panel3.add(button8);
panel3.add(button9);
panel3.add(button10);
frame.setVisible(true);
frame.pack();
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}