GUI AWT 1-2.3布局管理器
GUI编程
Graphical User Interface 图形用户界面
- 这是什么?
- 它怎么玩?
- 该如何运用
组件
- 窗口
- 弹窗
- 面板
- 文本框
- 列表框
- 按钮
- 图片
- 监听事件
- 鼠标
- 键盘事件
- 破解工具(外挂)
1. 简介
核心技术:AWT Swing
1.界面不美观
2.需要jre环境
为什么要学习?
1.可以写出自己心中想要的一些小工具
2.工作的时候,也可能需要维护到swing界面,概率极小
3.了解MVC架构,了解监听!
2.AWT
2.1 AWT介绍
(abstract window tool)
-
包含很多类和接口! GUI!
-
元素:窗口,按钮,文本框。。。
-
java.awt
2.2 组件和容器
- Frame
描述:使用GUI创造窗口,其中的类封装起来
package com.GGp.lesson01;
import java.awt.*;
public class TestFrame {
public static void main(String[] args) {
//展示多个窗口 new
MyFrame myFrame1 = new MyFrame(100, 100, 200, 200, Color.gray);
MyFrame myFrame2 = new MyFrame(100, 310, 200, 200, Color.yellow);
MyFrame myFrame3 = new MyFrame(310, 100, 200, 200, Color.red);
MyFrame myFrame4 = new MyFrame(310, 310, 200, 200, Color.green);
}
}
//封装起来,并继承Frame类,可以直接调用里面的方法
class MyFrame extends Frame{
static int id = 0;//创造多个窗口,设计一个计数器
//有参构造器,设置初始位置,宽高,背景颜色
public MyFrame(int x,int y,int w,int h,Color color){
//窗口标题
super("MyFrame" + (++id));
//窗口大小显示
setBounds(x,y,w,h);
//背景颜色
setBackground(color);
//窗口是否可变大小
setResizable(false);
//窗口显示
setVisible(true);
}
}
- 面板Panel
package com.GGp.lesson01;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
//pannel可以看作一个空间,但不能单独存在
public class TestPanel {
public static void main(String[] args) {
//总
Frame frame = new Frame();
//面板
Panel panel = new Panel();
//设置布局
frame.setLayout(null);
//窗口坐标,背景
frame.setBounds(300,300,500,500);
frame.setBackground(new Color(31, 241, 22));
//布局坐标,背景
panel.setBounds(20,20,100,500);
panel.setBackground(new Color(17, 20, 227));
//frame.add(panel)
frame.add(panel);
//设置可见性
frame.setVisible(true);
//监听事件 监听窗口关闭事件 System.exit(0)
//适配器模式
frame.addWindowListener(new WindowAdapter() {
//窗口点击关闭的时候需要做的事情
@Override
public void windowClosing(WindowEvent e) {
//关闭
System.exit(0);
}
});
}
}
2.3 布局管理器
-
流式布局
package com.GGp.lesson01; import java.awt.*; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; //流式布局 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.setLayout(new FlowLayout(FlowLayout.LEFT)); frame.setLayout(new FlowLayout(FlowLayout.CENTER)); frame.setSize(200,200); //把按钮添加上去 frame.add(button1); frame.add(button2); frame.add(button3); frame.setVisible(true); frame.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { System.exit(0); } }); } }
-
东西南北中
package com.GGp.lesson01; import java.awt.*; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; //东西南北中 public class TestBorderLayout { public static void main(String[] args) { Frame frame = new Frame("TestBorderLayout"); frame.setVisible(true); 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(400,400); frame.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { System.exit(0); } }); } }
-
表格布局
package com.GGp.lesson01; import java.awt.*; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; //表格布局 public class TestTableLayout { public static void main(String[] args) { Frame frame = new Frame("TestTableLayout"); frame.setVisible(true); Button btn1 = new Button("btn1"); Button btn2 = new Button("btn2"); Button btn3 = new Button("btn3"); Button btn4 = new Button("btn4"); //表格布局 frame.setLayout(new GridLayout(3,2)); //添加 frame.add(btn1); frame.add(btn2); frame.add(btn3); frame.add(btn4); frame.pack();//java函数,用于填充最佳位置 frame.setSize(400,400); frame.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { System.exit(0); } }); } }
测试:
import java.awt.*; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; public class TestLayout { public static void main(String[] args) { //总布局 Frame frame = new Frame("TestLayout"); frame.setBounds(500,500,500,500); frame.setBackground(new Color(66, 128, 220)); frame.setVisible(true); frame.setLayout(new GridLayout(2,1)); Panel p1 = new Panel(new BorderLayout()); Panel p2 = new Panel(new GridLayout(2,1)); Panel p3 = new Panel(new BorderLayout()); Panel p4 = new Panel(new GridLayout(2,2)); //上层面板 p1.add(new Button("btn1"),BorderLayout.WEST); p2.add(new Button("btn3")); p2.add(new Button("btn4")); p1.add(new Button("btn2"),BorderLayout.EAST); p1.add(p2,BorderLayout.CENTER); //下层面板 p3.add(new Button("btn5"),BorderLayout.WEST); p3.add(new Button("btn6"),BorderLayout.EAST); for (int i = 7; i < 11; i++) { p4.add(new Button("btn" + i)); } p3.add(p4,BorderLayout.CENTER); frame.add(p1); frame.add(p3); frame.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { System.exit(0); } }); } }