(GUI编程)Day01
怎么学?
-
这是什么?
-
它怎么玩?
-
该如何去在平时运用?
组件
-
窗口
-
弹窗
-
面板
-
文本框
-
列表框
-
按钮
-
图片
-
监听事件
-
鼠标
-
键盘事件
-
破解工具
1、简介
GUI的核心技术:Swing AWT
-
界面不美观
-
需要jre环境!
为啥我们要学习?
-
可以写出自己心中想要的一些小工具
-
工作时候,也可能需要维护到swing界面,概率极小!
-
了解MVC架构,了解监听!
2、AWT
2.1、AWT介绍
new 类! AWT:抽象的窗口工具。
-
包含了很多类和接口!GUI:图形用户界面编程。
-
元素:窗口,按钮,文本框
-
java.awt
2.2、组件和容器
1、Frame
package com.sqdht.lesson01;
import java.awt.*;
//GUI的第一个界面
public class TestFrame {
public static void main(String[] args) {
//Frame,JDK,看源码!
Frame frame = new Frame("我的第一个Java图像界面窗口");
//需要设置可见性 width heigth
frame.setVisible(true);
//设置窗口大小
frame.setSize(400,400);
//设置背景颜色 Color
frame.setBackground(new Color(113, 170, 175));
//弹出的初始位置
frame.setLocation(200,200);
//设置窗口大小固定
frame.setResizable(false);
}
}
尝试回顾封装:
package com.sqdht.lesson01;
import java.awt.*;
public class TestFrame2 {
public static void main(String[] args) {
//展示多个窗口 new
MyFrame myFrame1 = new MyFrame(100, 100, 200, 200, Color.blue);
MyFrame myFrame2 = new MyFrame(300, 100, 200, 200, Color.yellow);
MyFrame myFrame3 = new MyFrame(100, 300, 200, 200, Color.red);
MyFrame myFrame4 = new MyFrame(300, 300, 200, 200, Color.gray);
}
}
class MyFrame extends Frame {
static int id = 0; //可能存在多个窗口,我们需要一个计数器
public MyFrame(int x,int y,int w,int h,Color color) {
super("Myframe"+(++id));
setBackground(color);
setBounds(x,y,w,h);
setVisible(true);
}
}
2、Panel
解决了关闭事件!
package com.sqdht.lesson01;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
//Panel 可以看成是一个空间,但是不能单独存在
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(Color.green);
//panel 设置坐标,相对于frame
panel.setBounds(50,50,400,400);
panel.setBackground(new Color(211, 59, 5));
//frame.add(panel)
frame.add(panel);
frame.setVisible(true);
//监听事件,监听窗口关闭时间 System.exit(0)
//适配器模式:
frame.addWindowListener(new WindowAdapter() {
//窗口点击关闭的时候需要做的事情
3、布局管理器
-
流式布局
package com.sqdht.lesson01;
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.setLayout(new FlowLayout(FlowLayout.LEFT));
frame.setLayout(new FlowLayout(FlowLayout.RIGHT));
frame.setSize(200,200);
frame.setVisible(true);
//把按钮添加上去
frame.add(button1);
frame.add(button2);
frame.add(button3);
}
}
-
东西南北中
package com.sqdht.lesson01;
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.setVisible(true);
frame.setBounds(200,200,600,600);
}
}
-
表格布局 Grid
package com.sqdht.lesson01;
import java.awt.*;
public class TestGridLayout {
public static void main(String[] args) {
Frame frame = new Frame();
Button btn1 = new Button("btn1");
Button btn2 = new Button("btn2");
Button btn3 = new Button("btn3");
Button btn4 = new Button("btn4");
Button btn5 = new Button("btn5");
Button btn6 = new Button("btn6");
frame.setLayout(new GridLayout(3,2));
frame.add(btn1);
frame.add(btn2);
frame.add(btn3);
frame.add(btn4);
frame.add(btn5);
frame.add(btn6);
frame.pack(); //Java函数!自动布局
frame.setVisible(true);
}
}
4、练习
package com.sqdht.lesson01;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class TestPractise {
public static void main(String[] args) {
Frame frame = new Frame("练习");
frame.setVisible(true);
frame.setBounds(100,100,1000,600);
frame.setLayout(new GridLayout(2,1));
Panel panel0 = new Panel(new BorderLayout());
Panel panel1 = new Panel(new BorderLayout());
panel0.setBounds(0,0,1000,300);
panel1.setBounds(500,0,1000,300);
Panel panel00 = new Panel(new GridLayout(2,1));
panel00.setBounds(0,200,600,300);
Panel panel10 = new Panel(new GridLayout(2,2));
panel10.setBounds(0,200,600,300);
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");
Button button7 = new Button("Button7");
Button button8 = new Button("Button8");
Button button9 = new Button("Button9");
Button button10 = new Button("Button10");
panel00.add(button2);
panel00.add(button3);
panel10.add(button6);
panel10.add(button7);
panel10.add(button8);
panel10.add(button9);
panel0.add(button1,BorderLayout.WEST);
panel0.add(panel00,BorderLayout.CENTER);
panel0.add(button4,BorderLayout.EAST);
panel1.add(button5,BorderLayout.WEST);
