GUI【狂神笔记】

GUI编程简介Gui的核心技术:Swing AWT缺点界面不美观需要jre环境好处可以写出自己心中想要的一些小工具工作时候,也可能需要维护到Swing界面,概率极小了解MVC架构,了解监听AWTAWT介绍包含了很多的类和接口!GUI:元素:窗口,按钮,文本框java.awt组件和容器Frame界面public static void main(String[] args) { //编写第一个GUI界面 Frame frame=new Frame("第一个
摘要由CSDN通过智能技术生成

GUI编程

简介

Gui的核心技术:Swing AWT

缺点

  1. 界面不美观
  2. 需要jre环境

好处

  1. 可以写出自己心中想要的一些小工具
  2. 工作时候,也可能需要维护到Swing界面,概率极小
  3. 了解MVC架构,了解监听

AWT

AWT介绍

  1. 包含了很多的类和接口!GUI:
  2. 元素:窗口,按钮,文本框
  3. java.awt

组件和容器

Frame界面
public static void main(String[] args) {
   
		//编写第一个GUI界面
		Frame frame=new Frame("第一个Java图像界面窗");
		//设置可见性
		frame.setVisible(true);
		//设置窗口大小
		frame.setSize(400, 400);
		//设置背景颜色 Color
		frame.setBackground(new Color(255, 255, 255));
		//设置弹出的初始位置
		frame.setLocation(200, 200);
		//设置大小锁定
		frame.setResizable(false);
	}

问题:窗口关闭不掉,停止java程序即可

回顾封装:

public class MyFrame {
   

	public static void main(String[] args) {
   
		//展示多个窗口
		 CreatFrame mf1=new CreatFrame(100, 100, 200, 200, Color.blue);
		 CreatFrame mf2=new CreatFrame(300, 100, 200, 200, Color.green);
		 CreatFrame mf3=new CreatFrame(100, 300, 200, 200, Color.red);
		 CreatFrame mf4=new CreatFrame(300, 300, 200, 200, Color.magenta);
	}


}
class CreatFrame extends Frame{
   
	static int id=0;//可能存在多个窗口,需要一个计数器
	public CreatFrame(int x,int y,int h,int w,Color color) {
   
		super("MyFrame+"+(++id));
		setBackground(color);
		setBounds(x, y, w, h);
		setVisible(true);
	}
}
Panel面板
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

//panel可以看成是一个空间,但是不能单独存在
public class TsetPanel {
   
	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(10,100,200));
		//Panel设置坐标,相对于Frame
		panel.setBounds(50, 50, 400, 400);
		panel.setBackground(new Color(150,150,150));
		//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);
			}
		});
	}
}

布局管理器

  • 流式布局
public static void main(String[] args) {
   
		Frame frame=new Frame();
		//组件-按钮
		Button button1=new Button("1");
		Button button2=new Button("2");
		Button button3=new Button("3");
		//流式布局
//		frame.setLayout(new FlowLayout());
//		frame.setLayout(new FlowLayout(FlowLayout.LEFT));
		frame.setLayout(new FlowLayout(FlowLayout.RIGHT));
		
		frame.setSize(500, 500);
		//添加按钮
		frame.add(button1);
		frame.add(button2);
		frame.add(button3);
		
		frame.setVisible(true);
	}

  • 东西南北中
public static void main(String[] args) {
   
		Frame frame=new Frame();

		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.setSize(500, 500);
		//东西南北中
		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);
	}
  • 表格布局

表格布局组件数超过其容纳个数会自动优化以容纳这些组件

public static void main(String[] args) {
   
		Frame frame=new Frame();
		
		Button button1=new Button("1");
		Button button2=new Button("2");
		Button button3=new Button("3");
		Button button4=new Button("4");
		Button button5=new Button("5");
		Button button6=new Button("6");
		//表格布局,三行两列
		frame.setLayout(new GridLayout(3,2));
		frame.setSize(500, 500);
		
		frame.add(button1);
		frame.add(button2);
		frame.add(button3);
		frame.add(button4);
		frame.add(button5);
		frame.add(button6);
		
		frame.pack();//java函数
		frame.setVisible(true);
	}

练习

public static void main(String[] args) {
   
		Frame frame=new Frame();
		Panel panel1=new Panel();
		Panel panel2=new Panel();
		Panel panel3=new Panel();
		Panel panel4=new Panel();
		
		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");
		Button b6=new Button("b6");
		Button b7=new Button("b7");
		Button b8=new Button("b8");
		Button b9=new Button("b9");
		Button b10=new Button("b10");
		
		frame.setLayout(new GridLayout(2,1));
		panel1.setLayout(new BorderLayout());
		panel2.setLayout(new GridLayout(2,1));
		panel3.setLayout(new BorderLayout());
		panel4.setLayout(new GridLayout(2,2));
		
		panel1.add(b1,BorderLayout.EAST);
		panel1.add(panel2,BorderLayout.CENTER);
		panel1.add(b4,BorderLayout.WEST);
		panel3.add(b5,BorderLayout.EAST);
		panel3.add(panel4,BorderLayout.CENTER);
		panel3.add(b10,BorderLayout.WEST);
		panel2.add(b2);
		panel2.add(b3);
		panel4.add(b6);
		panel4.add(b7);
		panel4.add(b8);
		panel4.add(b9);
		frame.add(panel1);
		frame.add(panel3);
		
		frame.setSize(400, 400);
		frame.setVisible(true);	
	}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1PZPTuyP-1652448896853)(C:\Users\122618942\AppData\Roaming\Typora\typora-user-images\image-20220428175417232.png)]

总结:

  1. Frame是一个顶级窗口
  2. Panel无法单独显示,必须添加到某个容器中
  3. 布局管理器
    1. 流式
    2. 东南西北中
    3. 表格
  4. 大小,定位,背景颜色,可见,监听!

事件监听

  • 当某个事情发生的时候,干什么?
public class TestActionListener {
   

	public static void main(String[] args) {
   
		Frame frame=new Frame();
		Button button=new Button();
		
		//需要一个ActionListener,创建一个ActionListener
		MyActionListener myActionListener=new MyActionListener();
		button.addActionListener(myActionListener);
		
		frame.add(button,BorderLayout.CENTER);
		frame.setVisible(true);
		frame.setSize(200, 200
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值