GDPU Java 天码行空7

实验目的:
熟悉awt组件和三种基本布局,掌握按钮、文本框、标签、等基本控件的使用和事件响应编程。
熟悉布局管理器

1. 窗体关闭事件

💖 WindowCloseEvent.java

import java.awt.event.WindowAdapter; // 导入WindowAdapter类,用于处理窗口事件
import java.awt.event.WindowEvent; // 导入WindowEvent类,用于表示窗口事件import javax.swing.*; // 导入Swing包,用于创建和管理图形用户界面// 创建一个继承自JFrame的类,用于处理窗口关闭事件
public class WindowCloseEvent extends JFrame
{// 构造函数,初始化窗口public WindowCloseEvent(){// 设置窗口标题this.setTitle("窗体关闭事件");// 设置窗口大小this.setSize(600, 300);// 设置默认关闭操作,当窗口关闭时退出程序this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 添加一个窗口监听器,用于监听窗口关闭事件this.addWindowListener(new WindowAdapter(){// 重写窗口关闭事件处理方法@Overridepublic void windowClosing(WindowEvent e){// 当窗口关闭时,退出程序System.exit(0);}});}// 主函数,程序的入口点public static void main(String[] args){// 创建WindowCloseEvent类的实例,即创建一个窗口WindowCloseEvent window = new WindowCloseEvent();// 设置窗口可见window.setVisible(true);}
}

💖 输出结果

在这里插入图片描述

2. 流式布局

三个按钮,点击按钮改变字体颜色,写出实现代码,贴出运行效果。

💖 FlowLayoutButton.java

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;public class FlowLayoutButton extends JFrame
{private JButton button1, button2, button3;private JLabel label;public FlowLayoutButton(){// 设置窗口标题this.setTitle("流式布局按钮");// 设置窗口大小this.setSize(300, 200);// 设置布局为流式布局this.setLayout(new FlowLayout());// 创建按钮1button1 = new JButton("按钮1");// 创建按钮2button2 = new JButton("按钮2");// 创建按钮3button3 = new JButton("按钮3");// 创建标签label = new JLabel("点击按钮改变字体颜色");// 为按钮1添加事件监听器button1.addActionListener(new ActionListener(){@Overridepublic void actionPerformed(ActionEvent e){// 当按钮1被点击时,改变标签的字体颜色为红色label.setForeground(Color.RED);}});// 为按钮2添加事件监听器button2.addActionListener(new ActionListener(){@Overridepublic void actionPerformed(ActionEvent e){// 当按钮2被点击时,改变标签的字体颜色为绿色label.setForeground(Color.GREEN);}});// 为按钮3添加事件监听器button3.addActionListener(new ActionListener(){@Overridepublic void actionPerformed(ActionEvent e){// 当按钮3被点击时,改变标签的字体颜色为蓝色label.setForeground(Color.BLUE);}});// 将按钮和标签添加到窗口中this.add(button1);this.add(button2);this.add(button3);this.add(label);}public static void main(String[] args){// 创建FlowLayoutButton类的实例,即创建一个窗口FlowLayoutButton window = new FlowLayoutButton();// 设置窗口可见window.setVisible(true);}
}

💖 输出结果

在这里插入图片描述

3. 网格布局

录入QQ号,不是数字不让录入,写出实现代码,贴出运行效果。

💖 源代码:GridLayoutQQ.java

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;public class GridLayoutQQ extends JFrame
{// 创建一个文本输入框private JTextField textField;// 创建一个标签private JLabel label;// 构造函数,初始化窗口public GridLayoutQQ(){// 设置窗口标题this.setTitle("网格布局QQ号输入");// 设置窗口大小this.setSize(300, 200);// 设置布局为网格布局,2行2列this.setLayout(new GridLayout(2, 2));// 创建一个文本输入框,长度为10textField = new JTextField(10);// 创建一个标签,提示用户输入QQ号label = new JLabel("请输入QQ号:");// 为文本输入框添加键盘事件监听器textField.addKeyListener(new KeyAdapter(){// 重写键盘事件处理方法@Overridepublic void keyTyped(KeyEvent e){// 获取按下的键的字符char c = e.getKeyChar();// 如果按下的键不是数字,则不处理if (!Character.isDigit(c)){e.consume();}}});// 将标签和文本输入框添加到窗口中this.add(label);this.add(textField);}// 主函数,程序的入口点public static void main(String[] args){// 创建GridLayoutQQ类的实例,即创建一个窗口GridLayoutQQ window = new GridLayoutQQ();// 设置窗口可见window.setVisible(true);}
}

💖 输出结果

在这里插入图片描述

4. 边界布局

实现鼠标事件案例:鼠标移动到按钮上改变背景颜色,写出实现代码,贴出运行效果。

💖 源代码:BorderLayoutMouse.java

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;public class BorderLayoutMouse extends JFrame
{// 创建一个按钮private JButton button;// 构造函数,初始化窗口public BorderLayoutMouse(){// 设置窗口标题this.setTitle("边界布局鼠标事件");// 设置窗口大小this.setSize(300, 200);// 设置布局为边界布局this.setLayout(new BorderLayout());// 创建一个按钮,显示文本为"按钮"button = new JButton("按钮");// 为按钮添加鼠标事件监听器button.addMouseListener(new MouseAdapter(){// 重写鼠标进入事件处理方法@Overridepublic void mouseEntered(MouseEvent e){// 当鼠标进入按钮时,改变按钮的背景颜色为黄色button.setBackground(Color.YELLOW);}// 重写鼠标离开事件处理方法@Overridepublic void mouseExited(MouseEvent e){// 当鼠标离开按钮时,改变按钮的背景颜色为白色button.setBackground(Color.WHITE);}});// 将按钮添加到窗口的中心区域this.add(button, BorderLayout.CENTER);}// 主函数,程序的入口点public static void main(String[] args){// 创建BorderLayoutMouse类的实例,即创建一个窗口BorderLayoutMouse window = new BorderLayoutMouse();// 设置窗口可见window.setVisible(true);}
}

💖 运行结果

在这里插入图片描述

5. Eclipse中安装WindowBuilder插件

  • 👨‍🏫 安装教程
    不知道成没成功
    在这里插入图片描述

6. 实现登陆功能

如果用户名密码正确,则跳转到新界面,并显示欢迎您:***。用户名与登陆时到输入到内容一致。若用户名或密码错误则弹出对话框提示。

💖 LoginFrame.java

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;public class LoginFrame extends JFrame
{
// 创建一个文本输入框,用于输入用户名private JTextField usernameField;
// 创建一个密码输入框,用于输入密码private JPasswordField passwordField;
// 创建一个登录按钮private JButton loginButton;// 构造函数,初始化窗口public LoginFrame(){// 设置窗口标题setTitle("登录界面");// 设置窗口大小setSize(800, 300);// 设置默认关闭操作,当窗口关闭时退出程序setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 设置布局为网格布局,3行2列setLayout(new GridLayout(3, 2));// 添加一个标签,提示用户输入用户名add(new JLabel("用户名:"));// 创建一个文本输入框,用于输入用户名usernameField = new JTextField();// 将文本输入框添加到窗口中add(usernameField);// 添加一个标签,提示用户输入密码add(new JLabel("密码:"));// 创建一个密码输入框,用于输入密码passwordField = new JPasswordField();// 将密码输入框添加到窗口中add(passwordField);// 创建一个登录按钮loginButton = new JButton("登录");// 为登录按钮添加事件监听器loginButton.addActionListener(new ActionListener(){// 重写事件处理方法@Overridepublic void actionPerformed(ActionEvent e){// 获取文本输入框和密码输入框中的内容String username = usernameField.getText();String password = new String(passwordField.getPassword());// 判断用户名和密码是否正确if (username.equals("lighting") && password.equals("123")){// 如果正确,显示欢迎信息,并打开欢迎界面JOptionPane.showMessageDialog(LoginFrame.this, "登录成功");WelcomeFrame welcomeFrame = new WelcomeFrame(username);welcomeFrame.setVisible(true);LoginFrame.this.setVisible(false);} else{// 如果错误,显示错误信息JOptionPane.showMessageDialog(LoginFrame.this, "用户名或密码错误");}}});// 将登录按钮添加到窗口中add(loginButton);}// 主函数,程序的入口点public static void main(String[] args){// 创建LoginFrame类的实例,即创建一个窗口LoginFrame loginFrame = new LoginFrame();// 设置窗口可见loginFrame.setVisible(true);}
}// WelcomeFrame类继承自JFrame,用于显示欢迎信息
class WelcomeFrame extends JFrame
{
// 构造函数,初始化窗口public WelcomeFrame(String username){
// 设置窗口标题setTitle("欢迎界面");
// 设置窗口大小setSize(300, 200);
// 设置默认关闭操作,当窗口关闭时退出程序setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 设置布局为网格布局,2行1列setLayout(new GridLayout(2, 1));// 添加一个标签,显示欢迎信息add(new JLabel("欢迎 " + username + "!"));// 创建一个退出按钮JButton exitButton = new JButton("退出");// 为退出按钮添加事件监听器exitButton.addActionListener(new ActionListener(){// 重写事件处理方法@Overridepublic void actionPerformed(ActionEvent e){// 当按钮被点击时,退出程序System.exit(0);}});// 将退出按钮添加到窗口中add(exitButton);}
}

💖 运行结果

在这里插入图片描述

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

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

相关文章

江新安教授受邀金佰利进行《研发创新与创新思维》培训

近日,科济管线创始人江新安教授受邀金佰利为金佰利全国研发团队进行《研发创新与创新思维》培训授课。创新思维的两种思维形式——非逻辑思维和逻辑思维及其训练的主要方法。创新思维的培养,对于克服思维定势,提供创新方法,可以发…

FreGS:具有渐进频率正则化的3D高斯溅射

FreGS: 3D Gaussian Splatting with Progressive Frequency Regularization FreGS:具有渐进频率正则化的3D高斯溅射 Jiahui Zhang1  Fangneng Zhan2  Muyu Xu1  Shijian Lu1  Eric Xing3, 4 张家慧 1 詹方能 2 许慕玉 1 卢世坚 1 邢志伟 3, 4 1Nanyang Technolo…

19岁第一份“贺礼”,美创蝉联“2023年度数字化赋能服务商”

在即将到来的19岁,美创科技迎来第一份生日“贺礼”,再次蝉联“2023年度数字化赋能服务商”! 4月13日,以“数聚浙里 智领未来”为主题,由浙江省首席信息官协会主办的数字化转型与升级论坛暨CIO年度峰会于杭州隆重召开。…

[MySQL]数据库原理8——喵喵期末不挂科

希望你开心,希望你健康,希望你幸福,希望你点赞! 最后的最后,关注喵,关注喵,关注喵,大大会看到更多有趣的博客哦!!! 喵喵喵,你对我真的…

数字化仪:为何成为示波器的理想替代品?——PCIe8910M

在现代科技领域,数字化仪逐渐成为示波器的理想替代品。数字化仪具备诸多特点,使其在多个应用场景下表现出色,逐渐取代传统的示波器。本期文章将探讨数字化仪相对于示波器的优势,以及其哪些特点使其成为示波器的理想替代品。 简介…

【Datawhale LLM学习笔记】一、什么是大型语言模型(LLM)

文章目录 1. 什么是大模型2. 检索增强生成 RAG一、什么是 RAG二、RAG 的工作流程 3. langChain介绍一、什么是 LangChain二、LangChain 的核心组件 4. 开发 LLM 应用的整体流程一、何为大模型开发二、大模型开发的一般流程三、搭建 LLM 项目的流程简析(以知识库助手…

产品推荐 | 基于Lattice CrossLink-NX FPGA语音和视觉机器学习板

01 产品概述 Lattice Semiconductor CrossLink-NX语音和视觉机器学习板是高性能 – 专为低功耗机器学习应用而设计的电路板,采用CrossLink-NX 40K,这是一款具有AI加速器的强大FPGA。 基于视觉和语音的机器学习应用 – 板载低功耗图像传感器和麦克风以及…

Linux数据库自动备份 - 定时任务发到百度云盘、坚果云、邮箱附件

前言 1. 坚果云的webdav云盘最好! (免费账号每月1G上传流量) 2. 不建议数据库备份文件发送到SMTP邮箱,因为对方服务器非常容易当做垃圾邮件处理,而且发信的SMTP账号会被封禁(实测163发到QQ邮箱被封&…

更改docker镜像下载地址

一.简介 使用指令 sudo docker info 查看本机的docker镜像下载地址为 由于本机的var文件空间不足,因此,想更改他的存储地址,如下 二.开始操作 1.停止Docker服务: 执行命令 sudo systemctl stop docker 以及 sudo systemctl s…

220V转3.3V线性降压芯片WT5100

220V转3.3V线性降压芯片WT5100 WT5100就是那个离线式的稳压器芯片,没有电感的那种。里面内置了650V的大功率MOSFET,启动控制电路,电压控制电路,交流信号检测电路等等。通过切换SEL管脚,它就能输出5V或3.3V的电压。不需…

一本免费开源的电子书籍!这个 71.8k star 的项目,让你轻轻松松学会算法【文末有福利】

话说作为一名程序员,肯定都少不了在准备面试的时候刷 LeetCode 的算法题吧。虽然面试考察的算法题在工作中用到的非常少,但是确实是能让我们对常用的数据结构有更深刻的理解,以及对思维逻辑有很大的提升。不过枯燥的刷题可能让新手无从下手&a…

【Linux网络编程】UDP协议

UDP协议 1.再谈端口号端口号划分认识知名端口号(Well-Know Port Number)两个问题netstatpidof 2.UDP协议2.1UDP的特点2.2面向数据报2.3UDP的缓冲区2.4UDP使用注意事项2.5基于UDP的应用层协议 喜欢的点赞,收藏,关注一下把! 1.再谈端口号 端口…

计算方法实验5:对鸢尾花数据集进行主成分分析(PCA)并可视化

任务 iris数据集包含150条数据,从iris.txt读取,每条数据有4个属性值和一个标签(标签取值为0,1,2)。要求对这150个4维数据进行PCA,可视化展示这些数据在前两个主方向上的分布,其中不…

笔记84:关于递归法的一些感悟

题目1:二叉树的前序遍历 链接:. - 力扣(LeetCode) /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(…

京东详情比价接口优惠券(2)

京东详情API接口在电子商务中的应用与作用性体现在多个方面,对于电商平台、商家以及用户都带来了显著的价值。 首先,从应用的角度来看,京东详情API接口为开发者提供了一整套丰富的功能和工具,使他们能够轻松地与京东平台进行交互。…

后台运行程序时报错

问题描述:使用pycharm连接服务器运行程序时,可以正常运行。但是使用Termius终端运行时报错(运行时切换到和pycharm相同的路径)。 2024-04-15 14:35:01.663900: I external/local_xla/xla/stream_executor/cuda/cuda_dnn.cc:454] …

Java基础(变量)

什么是变量? 变量:在程序的执行过程中,其值有可能发生改变的量(数据) 变量的使用场景 当某个数据经常发生改变时,我们也可以用变量储存。当数据变化时,只要修改变量里面记录的值即可。 变量…

加州大学戴维斯分校最新Nature Ecology Evolution(IF=19)!入侵植物在成为生态威胁之前可能会休眠几十年甚至几百年

根据加利福尼亚大学戴维斯分校领导的一项新研究,入侵植物在被引入环境后可能会休眠几十年甚至几百年,然后才会迅速扩展并造成生态破坏(非常意外和可怕)。这项发表在《Nature Ecology & Evolution》上的研究调查了全球九个地区…

掌握JMeter HTTP 请求头:简单易懂

在深入研究 JMeter 的过程中,任何涉及性能测试或接口验证的专业人员都会认识到,合理配置HTTP请求头部信息是实现精确测试的关键步骤之一。不同情景下,如数据提交形式的不同(例如 JSON、XML 等),或是需要通过…

英语技术会议常用语

个人整理。 自我介绍: Hello everyone, Im [Your Name], and Im excited to be here today. I work as [Your Position] at [Your Company/Organization], where I focus on [Brief Description of Your Role or Expertise]. Im looking forward to our discussion…