JavaGUI(但期末速成版)之事件监听和处理

news2024/12/29 1:27:59

点击返回标题->JavaGUI期末速成版-CSDN博客


前言

依旧先声明,本篇记录的JavaGUI编程都是十分精简的,内容只取常用的、套路的、应付期末考试的。


我先放两张ppt的原内容。。。 

看完(我觉得你可能都没看完),摊牌了,我也没看完。。。好复杂,看不懂/(ㄒoㄒ)/~~

无所谓,只要会用就行了,而且出于应对期末考的目的,本篇只研究按下按钮的事件监听和处理。

套路模板一

①写一个自定义类my_listener,实现ActionListener这个接口,并重写其中的actionPerformed方法(这个方法就固定接收一个ActionEvent类好了,记不住没关系,编译器都能自动生成!),比如这样:

class my_listener implements ActionListener {

    @Override
    public void actionPerformed(ActionEvent e) {
        System.out.println("按钮被点击了呃!");
    }
}

②创建容器和按钮组件,对按钮添加自定义监听类对象(通常这里会用匿名对象的写法,因为一个按钮对应一个事件,只用一次),最后把按钮塞到容器中。

创建容器和按钮组件,对按钮添加自定义监听类对象,最后把按钮塞到容器中。
JPanel pane = new JPanel();
JButton button = new JButton("这是一个按钮");
button.addActionListener(new my_listener());
pane.add(button);

③处理一下其它窗口、容器的细节,该显示的显示,该设置大小的设置大小,等等等。。。

完整模板代码如下:

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

class my_listener implements ActionListener {

    @Override
    public void actionPerformed(ActionEvent e) {
        System.out.println("按钮被点击了呃!");
    }
}

public class Main {

    public static void createGUI() {
        JFrame fr = new JFrame("这是主窗口");//通常直接在有参构造的时候命名,省得后续用setTitle()方法命名了。
        fr.setSize(400, 250);//设置窗体宽高
        fr.setLocation(400, 300);//设置窗体坐标
        //下面这行代码的作用和上面两行被注释的代码的作用一模一样,不信你试试~
        //fr.setBounds(400, 300, 400, 250);
        fr.setVisible(true);//设置窗体可见,基本必写吧?
        fr.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//设置窗体关闭按钮响应事件为关闭此窗口。

        //创建容器和按钮组件,对按钮添加自定义监听类对象,最后把按钮塞到容器中。
        JPanel pane = new JPanel();
        JButton button = new JButton("这是一个按钮");
        button.addActionListener(new my_listener());
        pane.add(button);
        //把容器放在窗口中
        fr.add(pane);
    }

    public static void main(String[] args) {
        createGUI();
    }
}


套路模板二 

套路二和套路一的main方法中的代码几乎一样,唯一的区别在于套路一走的思路是自定义子类实现接口ActionListener,然后用自定义子类去创建对象。

而套路二,我们直接利用匿名内部类(如果忘了见本篇Java内部类-CSDN博客的标题二的子标题④学习)的思路去创建ActionListener的实例化化对象,具体代码如下:

button.addActionListener(new ActionListener() {

    @Override
    public void actionPerformed(ActionEvent e) {
    System.out.println("按钮被点击了呃~");
    }
});

完整模板代码如下:

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


public class Main {

    public static void createGUI() {
        JFrame fr = new JFrame("这是主窗口");//通常直接在有参构造的时候命名,省得后续用setTitle()方法命名了。
        fr.setSize(400, 250);//设置窗体宽高
        fr.setLocation(400, 300);//设置窗体坐标
        //下面这行代码的作用和上面两行被注释的代码的作用一模一样,不信你试试~
        //fr.setBounds(400, 300, 400, 250);
        fr.setVisible(true);//设置窗体可见,基本必写吧?
        fr.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//设置窗体关闭按钮响应事件为关闭此窗口。

        //创建容器和按钮组件,对按钮添加自定义监听类对象,最后把按钮塞到容器中。
        JPanel pane = new JPanel();
        JButton button = new JButton("这是一个按钮");
        button.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println("按钮被点击了呃~");
            }
        });
        pane.add(button);
        //把容器放在窗口中
        fr.add(pane);
    }

    public static void main(String[] args) {
        createGUI();
    }
}

效果和模板一没区别,就不展示了。 


学会上面两个套路后,根据题目要求,修改对应的响应事件即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1326924.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mysql 23-2day 数据库查询(DQL)

目录 数据库查询(DQL)环境:准备一个表格作为查询环境查看数据根据要求查看数据运算查询as 可以修改字段名字 进行查询查询所有部门拼接两个字段查询 2017年入职的员工一个是空null 一个是空白查询 NULL集合排序查询查看有那些组通配符正则查询函数 数据库查询(DQL) …

LeetCode 1901. 寻找峰值 II

一、题目 1、题目描述 一个 2D 网格中的 峰值 是指那些 严格大于 其相邻格子(上、下、左、右)的元素。 给你一个 从 0 开始编号 的 m x n 矩阵 mat ,其中任意两个相邻格子的值都 不相同 。找出 任意一个 峰值 mat[i][j] 并 返回其位置 [i,j] 。 你可以假设整个矩阵…

透明加密 | 半透明加密 \ 智能加密的区别

透明加密、半透明加密和智能加密都是数据加密技术,但它们在应用方式、加密效果和使用场景上存在一些区别。 PC端访问地址: www.drhchina.com 透明加密: 透明加密是一种强制加密技术,它通过文件过滤驱动透明加解密技术进行文件加…

uniapp uview1.0 页面多个upload上传、回显之后处理数据

<view class"img-title w-s-color-3 f-28 row">商品图片</view><u-upload ref"images" :header"header" :file-list"fileListImages" :action"action" name"iFile" icon-name"camera"u…

【K8s】2# 使用kuboard管理K8s集群(kuboard安装)

文章目录 安装 Kuboard v3部署计划 安装登录测试 安装 Kuboard v3 部署计划 在正式安装 kuboard v3 之前&#xff0c;需做好一个简单的部署计划的设计&#xff0c;在本例中&#xff0c;各组件之间的连接方式&#xff0c;如下图所示&#xff1a; 假设用户通过 http://外网IP:80…

BBS项目--登录

BBS阶段性测试总要求 django登录报错 Error: [WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试。 原因分析&#xff1a;出现这种情况在Windows中很常见&#xff0c;就是端口被占用 解决措施&#xff1a;这时我们只需改一下端口便可以了 登录前端页面(HTML…

windows netstat命令

文章目录 前言各选项的含义如下&#xff1a; 前言 Netstat是控制台命令,是一个监控TCP/IP网络的非常有用的工具&#xff0c;它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据&#xff0c;一般用于检…

SQL基础:查询的基本使用

上一节我们讲述了记录的基本操作&#xff0c;这一节我们来单独讲一下查询。 查询基本结构 首先我们来看下查询的基本结构 SELECTcolumn1,column2,... FROMtable_name [WHEREcondition] [GROUP BYcolumn1, column2, ...] [HAVINGaggregate_function(column) condition] [ORDE…

使用docker-compose搭建docker私服与配置WebUI

简介 本文介绍了使用docker compose 搭建 docker私服 环境 Docker version 24.0.6, build ed223bc Docker Compose version v2.21.0 正文 一、创建registry文件夹 我的路径是/usr/loca/docker/registry 二、创建并编写docker-compose.yml version: "3.9" services…

MyBatis Plus使用遇到的问题

如果想使用Mapper的xxxById()方法&#xff0c;实体类的主键上面必须加上TableId注解&#xff0c;如果不加&#xff0c;会报错 2023-12-21 22:48:33.526 WARN 11212 --- [ main] c.b.m.core.injector.DefaultSqlInjector : class com.example.mybatisplusdemo.dom…

CEC2013(python):五种算法(GA、WOA、GWO、DBO、HHO)求解CEC2013(python代码)

一、五种算法简介 1、遗传算法算法GA 2、鲸鱼优化算法WOA 3、灰狼优化算法GWO 4、蜣螂优化算法DBO 5、哈里斯鹰优化算法HHO 二、5种算法求解CEC2013 &#xff08;1&#xff09;CEC2013简介 参考文献&#xff1a; [1] Liang J J , Qu B Y , Suganthan P N , et al. Prob…

C语言---井字棋(三子棋)

Tic-Tac-Toe 1 游戏介绍和随机数1.1 游戏介绍1.2 随机数的生成1.3 棋盘大小和符号 2 设计游戏2.1 初始化棋盘2.2 打印棋盘2.3 玩家下棋2.4 电脑下棋2.5 判断输赢2.6 game()函数2.7 main()函数 3 完整三子棋代码3.1 Tic_Tac_Toe.h3.2 Tic_Tac_Toe.c3.3 Test.c 4 游戏代码的缺陷 …

3-高可用-隔离术

隔离是指将系统或资源分割开&#xff0c;系统隔离是为了在系统发生故障时&#xff0c;能限定传播范围和影响范围&#xff0c;即发生故障后不会出现滚雪球效应&#xff0c;从而保证只有出问题的服务不可用&#xff0c;其他服务还是可用的。 比较多的隔离手段有线程隔离、进程隔…

开源堡垒机JumpServer结合内网穿透实现远程访问

开源堡垒机JumpServer结合内网穿透实现远程访问 前言1. 安装Jump server2. 本地访问jump server3. 安装 cpolar内网穿透软件4. 配置Jump server公网访问地址5. 公网远程访问Jump server6. 固定Jump server公网地址 前言 JumpServer 是广受欢迎的开源堡垒机&#xff0c;是符合 …

57 优化二进制序列

动态规划 #include <iostream> using namespace::std; using std::cout; using std::cin; int yhejz(int n, int nums[]) {int dp0 0;int dp1 0;int result -1;for(int i0; i<n; i){if(nums[i] 1){dp1;dp0;}else {dp1 dp01;dp0 0;}result max(dp1,max(dp0,re…

计算机毕业设计 基于SpringBoot的大学生平时成绩量化管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

在线培训考试系统的优势及应用场景介绍

在线培训考试系统是一种基于互联网的教育工具&#xff0c;它结合了在线培训和考试的功能&#xff0c;具有许多优势和广泛的应用场景。 提高学习效果 在线培训考试系统首先可以提高学习效果。系统提供了多媒体学习资源&#xff0c;例如文字、图片、音频和视频等&#xff0c;以…

Visual Studio 输入英文会在字母之间自动增加空格

问题如图&#xff1a; 原因&#xff1a;我们在输入中文的时候&#xff0c;不小心按下了shift空格键&#xff0c;比如&#xff1a; 此时&#xff0c;我们在输入中文的时候&#xff0c;再次按下shift空格键就可以恢复正常了。

docker部署个人网站项目记录(前后端分离)

背景 项目是前后端分离&#xff0c;前端有三部分&#xff0c;分别是 个人网站&#xff08;blog&#xff09;网站后台管理系统&#xff08;admin&#xff09;数据大屏&#xff08;datascreen&#xff09; 后端是基于nodejs写的后台服务 后台接口服务&#xff08;todo-nodejs…

uniapp图片上传说明

目录 1.文件上传组件 2.单文件上传 3.多文件上传 4.图片的回显 5.注意点 1.文件上传组件 前端上传组件使用uni-file-picker&#xff0c;可以自行进行下载使用。默认上传到绑定的服务空间&#xff0c;配置属性auto-upload为false关闭自动上传&#xff0c;可以限定上传的是…