GUI编程
简介
GUI的核心技术: Swing AWT,界面不美观。需要jre环境
为什么要学习?
-
可以写出自己心中想要的小工具
-
工作时候可能需要维护到swing界面
-
AWT
AWT介绍
-
包含很多类和接口。GUI:图形用户界面编程
-
元素:窗口,按钮,文本框
-
java.awt
-
组件和容器
Frame:
/GUI的第一个界面
public class TestFrame {
public static void main(String[] args) {
//Frame,看源码
Frame frame = new Frame("我的第一个java图像界面窗口");
//需要设置可见性
frame.setVisible(true);
//设置窗口大小
frame.setSize(400,400);
//设置背景颜色
frame.setBackground(new Color(20, 234, 215));
//弹出的初始位置
frame.setLocation(200,200);
//设置大小固定
//frame.setResizable(false);
}
}
问题:窗口无法关闭,停止java程序
多个窗口:
回顾封装。
面板Panel
-
解决关闭问题
package com.wm.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(new Color(20, 222, 128));
//panel 设置坐标,相对于frame
panel.setBounds(50,50,400,400);
panel.setBackground(new Color(60, 136, 187));
//frame.add(panel)
frame.add(panel);
frame.setVisible(true);
//监听事件,监听窗口关闭 System。exit()
//适配器模式:
frame.addWindowListener(new WindowAdapter() {
//窗口关闭需要做的事情
布局管理
-
流式布局
-
public class TestFlowLayout {
public static void main(String[] args) {
Frame frame = new Frame();
//组件-按钮
Button button1 = new Button("del");
Button button2 = new Button("str");
Button button3 = new Button("s");
//设置为流式布局
frame.setLayout(new FlowLayout(FlowLayout.LEFT));
frame.setSize(200,200);
//把按钮添加上去
frame.add(button1);
frame.add(button2);
frame.add(button3);
frame.setVisible(true);
}
}
-
东西南北中
-
package com.wm.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 north = new Button("North");
Button south = new Button("South");
Button center = new Button("Center");
//添加到TestBorderLayout
frame.add(east,BorderLayout.EAST);
frame.add(north,BorderLayout.NORTH);
frame.add(south,BorderLayout.SOUTH);
frame.add(west,BorderLayout.WEST);
frame.add(center,BorderLayout.CENTER);
frame.setSize(200,200);
frame.setVisible(true);
}
}
-
-
表格布局
-
package com.wm.lesson01;
import java.awt.*;
public class TestGridLayout {
public static void main(String[] args) {
Frame frame = new Frame();
Button b1 = new Button("b1");
Button b2= new Button("b2");
Button b3 = new Button("b3");
Button b4 = new Button("b4");
Button b5 = new Button("b5");
frame.setLayout(new GridLayout(3,2));
frame.add(b1);
frame.add(b2);
frame.add(b3);
frame.add(b4);
frame.add(b5);
frame.setVisible(true);
}
}
-
总结:
-
Frame是一个顶级窗口
-
Panel无法单独显示,必须添加到某个容器中
-
布局管理器
1. 流式
1. 东西南北中
1. 表格
1. 监听
输入框TextField监听
package com.wm.lesson02;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.lang.reflect.Field;
public class TestText01 {//执行
public static void main(String[] args) {
MyFrame myFrame = new MyFrame();
myFrame.addWindowListener(new WindowAdapter() {
浙公网安备 33010602011771号