1.
import java.awt.*;
//GUi的第一个界面
public class TextFrame {
public static void main(String[] args) {
//frame类
Frame frame = new Frame("我的第一个图像窗口");
//需要设置可见性、
frame.setVisible(true);
//设置窗口大小
frame.setSize(400,400);
//设置背景颜色
frame.setBackground(new Color(95,13,92));
//设置位置
frame.setLocation(200,200);
//设置窗口大小是否固定
frame.setResizable(false);
2.多个窗口,先对代码进行封装
import java.awt.*;
public class TextFrame02 {
public static void main(String[] args) {
//设置多个窗口
MyFrame myFrame01 = new MyFrame(100, 100, 100, 100, Color.BLUE);
MyFrame myFrame02 = new MyFrame(100, 200, 100, 100, Color.red);
MyFrame myFrame03 = new MyFrame(250, 100, 100, 100, Color.green);
myFrame01.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}
//代码的封装
class MyFrame extends Frame{
static int id=1;
public MyFrame(int x ,int y ,int w , int h ,Color color ){
super("我的第"+(id++)+"个窗口");
setBackground(color);
setBounds(x,y,w,h);
setVisible(true);
}
}
3.面板(panel)
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class TextPanel {
public static void main(String[] args) {
Panel panel = new Panel();
Frame frame = new Frame("1");
//布局
frame.setLayout(null);
//坐标
frame.setBounds(200,200,500,500);
frame.setBackground(Color.red);
panel.setBounds(50,50,100,100);
panel.setBackground(Color.green);
frame.setVisible(true);
frame.add(panel);
//添加监听事件
frame.addWindowListener(new WindowAdapter() {
//窗口点击关闭是做的事情
public void windowClosing(WindowEvent e) {
//关闭窗口
System.exit(0);
}
});
}
}
4.三种布局
4.1表格布局(GridLayout)
以表格形式布局
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class TextFridLayout {
public static void main(String[] args) {
Frame frame = new Frame();
Button button01 = new Button("001");
Button button02 = new Button("002");
Button button03 = new Button("003");
Button button04 = new Button("004");
Button button05 = new Button("005");
Button button06 = new Button("006");
//表格布局
frame.setLayout(new GridLayout(3,2));
//设置上可见性
frame.setVisible(true);
//设置窗口位置大小
frame.setBounds(200,200,500,500);
frame.add(button01);
frame.add(button02);
frame.add(button03);
frame.add(button04);
frame.add(button05);
frame.add(button06);
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}
4.2流式布局(FlowLayout)
先铺满第一行,在接着往下铺满
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class TextFlowLayout {
public static void main(String[] args) {
Frame frame = new Frame();
//组件--按钮
Button button01 = new Button("001");
Button button02 = new Button("002");
Button button03 = new Button("003");
//流式布局
frame.setLayout(new FlowLayout());
frame.setVisible(true);
frame.setBounds(200,200,500,500);
frame.add(button01);
frame.add(button02);
frame.add(button03);
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}
4.3 东南西北中布局
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class TextBorderLayout {
public static void main(String[] args) {
Frame frame = new Frame();
Button east = new Button("east");
Button west = new Button("west");
Button sorth = new Button("sorth");
Button north = new Button("north");
Button center = new Button("center");
frame.setVisible(true);
frame.setBounds(200,200,500,500);
frame.add(east,BorderLayout.EAST);
frame.add(west,BorderLayout.WEST);
frame.add(sorth,BorderLayout.SOUTH);
frame.add(north,BorderLayout.NORTH);
frame.add(center,BorderLayout.CENTER);
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}
总结
Frame是一个顶级窗口
Panel无法单独显示,必须加到某个容器中
布局管理器:
- 流式
- 东西南北中
- 表格
大小,定位,颜色,监听器,可见性