GUI编程学习第一天
组件
- 窗口
- 弹窗
- 面板
- 文本框
- 列表框
- 按钮
- 图片
- 监听事件
- 鼠标
- 键盘事件
- 外挂
- 工具
简介
GUI核心技术:Swing,AWT(不流行)
- 界面不美观。
- 需要jre环境。
学习GUI得主要目的是了解MVC架构,了解监听。
AWT
AWT介绍
- 是一个new类,包含了很多类和接口,用于GUI编程,图形用户界面编程。
- 元素:窗口、按钮、文本框、
- java.awt
组件和容器
Frame
public class TestFrame {
public static void main(String[] args) {
Frame frame = new Frame("我的第一个java图形界面");
//设置可见性
frame.setVisible(true);
//设置窗口大小
frame.setSize(500, 500);
//设置背景颜色
frame.setBackground(new Color(206, 33, 47));
//设置窗口弹出的初始位置
frame.setLocation(200, 200);
//设定窗口大小固定
frame.setResizable(false);
}
}
问题,窗口无法关闭!
pannel
可以看成是一个空间,但是不能单独存在
加入窗口监听,可以解决窗口无法关闭的问题
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class TestPannel {
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(Color.blue);
//panel是设置坐标,相对于Frame
panel.setBounds(40, 40, 300, 300);
//设置背景颜色
panel.setBackground(Color.BLACK);
//将panel添加到frame中
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.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class TestFlowLayout {
public static void main(String[] args) {
Frame frame = new Frame("java窗口");
//设置窗口布局为流式布局
frame.setLayout(new FlowLayout());
//设置窗口背景颜色
frame.setBackground(Color.blue);
//设置窗口大小和位置
frame.setBounds(300, 300, 500, 500);
//new多个button
Button button1 = new Button("button1");
Button button2 = new Button("button2");
Button button3 = new Button("button3");
//将button添加到窗口中去
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);
}
});
}
}
- 东西南北中
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
public class TestBorderLayout {
public static void main(String[] args) {
Frame frame = new Frame("java窗口");
//设定为东西南北中布局
frame.setLayout(new BorderLayout(10, 10));
//设置窗口大小和位置
frame.setBounds(200, 200, 500, 500);
//设置背景颜色
frame.setBackground(Color.blue);
//new button
Button button1 = new Button("east");
Button button2 = new Button("west");
Button button3 = new Button("south");
Button button4 = new Button("north");
Button button5 = new Button("center");
//添加button到窗口中
frame.add(button1, BorderLayout.EAST);
frame.add(button2, BorderLayout.WEST);
frame.add(button3, BorderLayout.SOUTH);
frame.add(button4, BorderLayout.NORTH);
frame.add(button5, BorderLayout.CENTER);
//设定可见性
frame.setVisible(true);
//监听窗口,使得窗口可以关闭
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 TestGridLayout {
public static void main(String[] args) {
Frame frame = new Frame("Grid");
//设定窗口布局为grid布局
frame.setLayout(new GridLayout(2, 2, 10, 10));
//设置窗口大小和位置
frame.setBounds(200, 200, 500, 500);
//设置窗口背景颜色
frame.setBackground(Color.blue);
//new button
Button button1 = new Button("button1");
Button button2 = new Button("button2");
Button button3 = new Button("button3");
Button button4 = new Button("button4");
//将button添加到frame窗口中
frame.add(button1);
frame.add(button2);
frame.add(button3);
frame.add(button4);
//自动对齐
frame.pack();
//设置可见性
frame.setVisible(true);
//监听窗口,使得其可以被关闭
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 HomeWork {
public static void main(String[] args) {
Frame frame = new Frame("homework");
//设置窗口布局
frame.setLayout(new BorderLayout());
//设置窗口大小和位置
frame.setBounds(200, 200, 500, 500);
//new panel
Panel panel1 = new Panel(new GridLayout(2, 1));
Panel panel2 = new Panel(new GridLayout(4, 1));
Panel panel3 = new Panel(new GridLayout(2, 1));
//new button
Button button1 = new Button("pa1-1");
Button button2 = new Button("pa1-2");
Button button3 = new Button("pa2-1");
Button button4 = new Button("pa2-2");
Button button5 = new Button("pa2-3");
Button button6 = new Button("pa2-4");
Button button7 = new Button("pa3-1");
Button button8 = new Button("pa3-2");
//panel1中添加button
panel1.add(button1);
panel1.add(button2);
//panel2中添加button
panel2.add(button3);
panel2.add(button4);
panel2.add(button5);
panel2.add(button6);
//panel3中添加button
panel3.add(button7);
panel3.add(button8);
//窗口中添加panel
frame.add(panel1, BorderLayout.WEST);
frame.add(panel2, BorderLayout.CENTER);
frame.add(panel3, BorderLayout.EAST);
//设置可见性
frame.setVisible(true);
//设置监听窗口,使得窗口可以关闭
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}
总结
- Frame是一个顶级窗口
- Pannel无法单独显示,必须添加到某一个容器中
- 窗口背景颜色,大小,位置,可见性,监听
- 布局管理器
- 流式
- 东西南北
- 表格