JavaGUI编程学习

GUI编程

1.简介

GUI的核心技术:Swing,AWT

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

为什么我们要学习?

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

2.AWT

2.1 AWT介绍

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

在这里插入图片描述

2.2 组件和容器

1.Frame
package com.kuang.lesson01;

import java.awt.*;

//GUI第一个界面
public class TestFrame {
   
    public static void main(String[] args) {
   
        //Frame,JDK 看源码
        Frame frame=new Frame("我的第一个Java图像界面窗口");
        //设置可见性
        frame.setVisible(true);
        //设置窗口大小
        frame.setSize(400,400);
        //设置背景颜色

        frame.setBackground(new Color(16, 101, 54));
        //弹窗的初始位置
        frame.setLocation(200,200);
        //设置大小固定
        frame.setResizable(false);
    }
}

在这里插入图片描述

问题:发现窗口不能关闭,停止Java程序

尝试回顾封装:

package com.kuang.lesson01;

import java.awt.*;

public class TestFrame02 {
   
    public static void main(String[] args) {
   
        //展示多个窗口 new
        MyFrame myframe1=new MyFrame(100,100,200,200,Color.blue);
        MyFrame myframe12=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.blue);
    }
}
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.kuang.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();
        Panel panel1=new Panel();
        //设置布局
        frame.setLayout(null);
        //坐标
        frame.setBounds(300,300,500,500);
        frame.setBackground(new Color(85, 42, 158));
        //panel设置坐标,相对于frame
        panel.setBounds(23,34,45,56);
        panel.setBackground(new Color(210, 170, 46));
        panel1.setBounds(56,78,89,90);
        panel1.setBackground(new Color(236, 37, 86));
        //frame.add()
        frame.add(panel);
        frame.setVisible(true);
        //监听事件,监听窗口关闭事件system.exit(0);

        //适配器模式
        frame.addWindowListener(new WindowAdapter() {
   
            //窗口点击关闭的时候需要做的事情
            @Override
            public void windowClosing(WindowEvent e) {
   
                //结束程序
                super.windowClosing(e);
            }
        });
    }
}

在这里插入图片描述

2.3 布局管理器

  • 流式布局

    package com.kuang.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("button1");
            Button button3=new Button("button1");
            Button button4=new Button("button1");
            //设置为流式布局
            //frame.setLayout(new FlowLayout());
            frame.setLayout(new FlowLayout(FlowLayout.RIGHT));
            frame.setSize(200,200);
            //把按钮添加上去
            frame.add(button1);
            frame.add(button2);
            frame.add(button3);
            frame.add(button4 );
            frame.setVisible(true);
        }
    }
    
    

    在这里插入图片描述

  • 东南西北中

    package com.kuang.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 center = new Button("Center");
            frame.add(east,BorderLayout.EAST);
            frame.add(west,BorderLayout.WEST);
            frame.add(south,BorderLayout.SOUTH);
            frame.add(center,BorderLayout.CENTER);
            frame.setVisible(true);
            frame.setSize(200,200);
        }
    }
    
    

    在这里插入图片描述

  • 表格布局

    package com.kuang.lesson01;
    
    import java.awt.*;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import java.awt.*;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import java.awt.event.WindowListener;
    
    public class TestGridLayout {
         
        public static void main(String[] args) {
         
            Frame frame=new Frame("TestGridLayout");
            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);
            frame.addWindowListener(new WindowAdapter() {
         
                //窗口点击关闭的时候需要做的事情
                @Override
                public void windowClosing(WindowEvent e) {
         
                    //结束程序
                    System.exit(0);
                }
            } );
        }
    }
    
    
    

    在这里插入图片描述

课堂练习:

在这里插入图片描述

构思:

  1. frame

  2. 四个面板

    border

    左:button

    中:面板

    右:button

package com.kuang.lesson01;

import com.sun.javafx.logging.JFRInputEvent;

import javax.swing.*;
import javax.swing.border.Border;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class test01 {
   
    public static void main(String[] args) {
   
       //总Frame
        Frame frame = new Frame();
        frame.setSize(400,400);
        frame.setLocation(600, 600);
        frame.setBackground(Color.red);
        frame.setVisible(true);
        frame.setLayout(new GridLayout(2,1));//左中右布局
        //四个面板
        Panel
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值