GUI编程部分知识

本文介绍了Java的GUI编程基础知识,包括AWT组件和容器的使用,如Frame、Panel,以及布局管理器如流式布局和表格布局。还讨论了事件监听、输入框TextField的监听,并通过一个简易计算器的例子展示了如何结合内部类实现面向对象的设计。
摘要由CSDN通过智能技术生成

GUI(图形用户界面)编程

AWT

2.1 AWT介绍

  1. 包含很多类和接口
  2. 窗口、按钮、文本框

2.2 组件和容器

1.Frame

代码示例:

package com.zj.lesson1;

import java.awt.*;

//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(2, 107, 255));

        //弹出的初始位置
        frame.setLocation(200,200);

        //设置大小固定
        frame.setResizable(false);
    }
}

运行结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DaMK3XNF-1652254347238)(E:\JavaStudy\图片\firstFrame.png)]

注:此时无法使用关闭键关掉窗口,需要停止整个程序关闭

设置多个窗口:

package com.zj.lesson1;

import java.awt.*;

public class TestFrame2 {
   
    //展示多个窗口
    public static void main(String[] args) {
   
        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.pink);
    }
}

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);
    }
}

运行结果:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OXiLP2Ei-1652254347246)(E:\JavaStudy\图片\moreFrame.png)]

2.面板Panel

代码示例:

(添加了监听器,解决了关闭事件)

package com.zj.lesson1;

import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

//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(40,161,35));
        
        //Panel设置坐标,相对于frame
        panel.setBounds(50,50,400,400);
        panel.setBackground(new Color(214, 31, 220));

        //将面板添加到窗口
        frame.add(panel);

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

运行结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WsAi1la5-1652254347248)(E:\JavaStudy\图片\panel1.png)]

3. 布局管理器
  • 流式布局

    package com.zj.lesson1;
    
    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")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值