Java Swing花样玩法:教你用代码制作六一儿童节的精美贺卡(简单版)

news2024/12/25 9:35:17

博主:命运之光

专栏:Java经典程序设计

前言:这篇博客在打开可能会自动播放视频,视频有音乐,请及时静音哈🙂 

目录

✨前言

✨引言

✨简单介绍一下Javaswing这项技术简单介绍一下Javaswing这项技术(选读,感兴趣的可以了解一下哈(●'◡'●))

✨程序展示

✨视频展示

🍓源代码

✨结语


前言

🦄六一儿童节是一个充满欢乐和祝福的节日,我们都希望给孩子们送上最美好的礼物。我是一名编程爱好者,我用Javaswing写了一个关于六一儿童节的鲜花贺卡,它可以在电脑屏幕上显示出各种颜色和形状的花朵,还可以播放动画和音乐。我想通过这个贺卡,表达我对孩子们的爱和祝福,也希望能激发他们对编程的兴趣。在这篇博客中,我将和大家分享我是如何设计和实现这个贺卡的,以及我在这个过程中遇到的一些挑战和收获❤️


✨引言

儿童节快乐!在这个特殊的日子里,我想向所有的孩子们致以最诚挚的祝福。作为一位热爱编程和创造的开发者,我决定写下这篇博客,与大家分享一个简单而有趣的项目,让我们一起用Java Swing创造一个鲜花贺卡,把他送给你喜欢的人


✨简单介绍一下Javaswing这项技术简单介绍一下Javaswing这项技术(选读,感兴趣的可以了解一下哈(●'◡'●))

Javaswing是一种基于Java的图形用户界面(GUI)技术,它可以让开发者创建出丰富多彩的桌面应用程序。Javaswing提供了一系列的组件,如按钮、文本框、菜单、表格、树形结构等,以及一些高级功能,如拖放、撤销/重做、打印等。Javaswing的优点是跨平台、可定制、可扩展和易于使用。Javaswing的缺点是性能较低、内存占用较高、学习曲线较陡和与本地系统的集成度较低。本文将简单介绍一下Javaswing的历史、架构和应用范例,希望能给有兴趣的读者提供一些参考。

Javaswing的历史可以追溯到1995年,当时Java刚刚诞生,它的图形用户界面技术是基于AWT(Abstract Window Toolkit)的。AWT是一种与本地系统紧密耦合的技术,它使用了本地系统的组件和事件模型,因此具有很好的性能和集成度,但也导致了跨平台性和可定制性的问题。为了解决这些问题,Sun公司在1997年推出了JFC(Java Foundation Classes),其中包含了一个新的图形用户界面技术——Swing。Swing是一种纯Java的技术,它不依赖于本地系统的组件,而是自己绘制所有的界面元素,因此具有很好的跨平台性和可定制性,但也牺牲了一些性能和集成度。Swing最初是作为一个可选的扩展包提供的,后来在1998年被集成到了Java 2平台中,并成为了Java标准图形用户界面技术。

Javaswing的架构主要包括以下几个方面:组件、模型、事件、布局和外观。组件是指Swing提供的各种图形用户界面元素,如按钮、文本框等,它们都继承自javax.swing.JComponent类,这个类又继承自java.awt.Component类,因此Swing组件也可以使用AWT的一些特性,如容器、图形和字体等。模型是指Swing组件所依赖的数据结构,如按钮的状态、文本框的内容等,它们都实现了javax.swing.plaf.ComponentUI接口,这个接口定义了组件的基本行为和外观。事件是指Swing组件所响应的用户操作或系统通知,如鼠标点击、键盘输入等,它们都继承自java.awt.AWTEvent类,并使用了观察者模式来实现事件监听和分发。布局是指Swing组件在容器中的排列方式,如水平对齐、垂直对齐等,它们都实现了java.awt.LayoutManager接口,并提供了一些常用的布局管理器,如流式布局、网格布局等。外观是指Swing组件的视觉效果,如颜色、字体、图标等,它们都实现了javax.swing.plaf.ComponentUI接口,并提供了一些常用的外观风格,如金属风格、Windows风格等。

Javaswing的应用范例有很多,这里只举几个简单的例子。第一个例子是一个简单的计算器程序,它使用了Swing的按钮、文本框、标签和网格布局等组件,以及事件监听和处理等机制,实现了基本的加减乘除功能。第二个例子是一个简单的文本编辑器程序,它使用了Swing的文本区域、菜单、工具栏和滚动条等组件,以及拖放、撤销/重做和打印等功能,实现了基本的文本编辑功能。第三个例子是一个简单的图片浏览器程序,它使用了Swing的列表、标签和滑块等组件,以及图形和文件操作等技术,实现了基本的图片浏览功能。

以上就是对Javaswing这项技术的简单介绍,希望能对读者有所帮助。如果读者想要深入学习Javaswing,可以参考以下几本书籍:《Java Swing》(O'Reilly出版社),《Core Java Volume II - Advanced Features》(Prentice Hall出版社),《Java GUI程序设计》(清华大学出版社)。


✨程序展示


✨视频展示

六一儿童节快乐(鲜花贺卡)


🍓源代码

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

public class FlowerCardSender extends JFrame {
    private JComboBox<String> flowerComboBox;
    private JTextField recipientTextField;
    private JButton sendButton;

    public FlowerCardSender() {
        setTitle("送花祝福");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(400, 200);
        setLocationRelativeTo(null);

        // 设置布局为边界布局
        setLayout(new BorderLayout());

        // 创建标题面板
        JPanel titlePanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
        JLabel titleLabel = new JLabel("六一儿童节送花祝福");
        titleLabel.setFont(new Font("宋体", Font.BOLD, 18));
        titlePanel.add(titleLabel);

        // 创建表单面板
        JPanel formPanel = new JPanel(new GridLayout(3, 2, 10, 10));
        JLabel flowerLabel = new JLabel("花朵类型:");
        flowerComboBox = new JComboBox<>(new String[]{"玫瑰花", "康乃馨", "百合花"});
        JLabel recipientLabel = new JLabel("接收者:");
        recipientTextField = new JTextField();
        formPanel.add(flowerLabel);
        formPanel.add(flowerComboBox);
        formPanel.add(recipientLabel);
        formPanel.add(recipientTextField);

        // 创建按钮面板
        JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
        sendButton = new JButton("发送");
        sendButton.setPreferredSize(new Dimension(100, 40));
        sendButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                sendFlowerCard();
            }
        });
        buttonPanel.add(sendButton);

        // 添加面板到主窗口
        add(titlePanel, BorderLayout.NORTH);
        add(formPanel, BorderLayout.CENTER);
        add(buttonPanel, BorderLayout.SOUTH);

        setVisible(true);
    }

    private void sendFlowerCard() {
        String flowerType = (String) flowerComboBox.getSelectedItem();
        String recipient = recipientTextField.getText();

        // TODO: 使用邮件或短信服务发送花卡片
        // 在这里添加你的代码

        JOptionPane.showMessageDialog(this, "花卡片已发送给" + recipient + ",祝福已传达!");

        // 清空表单
        recipientTextField.setText("");
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new FlowerCardSender();
            }
        });
    }
}

✨结语

🍓🍓儿童节快乐!通过这篇博客,我们一起探索了使用Java Swing,我们看到了编程的魔力,我希望你喜欢这个小项目,它是我为了给孩子们带来一些快乐而制作的,永远少年🎉🎉🎉🎉

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

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

相关文章

电子模块|压力传感器模块HX711---硬件介绍与C51STM32驱动

电子模块|压力传感器模块HX711---硬件介绍与C51&&STM32驱动 实物照片模块简介模块特点 硬件模拟输入供电电源时钟选择串口通讯复位和断电HX711相关部分的 PCB 设计 软件驱动C51软件代码STM32软件代码 实物照片 模块简介 HX711是一款专为高精度称重传感器而设计的24位A…

全志V3S嵌入式驱动开发(音频输出和音频录制)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 之前在芯片公司的时候&#xff0c;基本没有看过音频这一块&#xff0c;只知道有个alsa框架这么个知识点。要驱动音频&#xff0c;需要两部分&#…

10-风险管理:如何应对暗礁风险?系统化风险管理让你安心!

项目已到中期&#xff0c;目前看很顺利&#xff0c;但隐隐不安&#xff1a;项目进展越平稳&#xff0c;我越觉不安。我担心项目会不会存在什么风险&#xff0c;而自己却没发现。 这种担心很必要&#xff0c;因为项目从构思起&#xff0c;就存在风险。光担心没用&#xff0c;项…

如何用LoadRunner 做性能测试?一篇文章教会你

目录 一、loadrunner介绍 二、测试计划 三、创建测试脚本 四、创建测试场景 五、分析结果 六、性能指标 一、loadrunner介绍 loadrunner有三个软件&#xff0c;其中Virtual User Generator是用于录制测试脚本的&#xff0c;是一个虚拟用户生成器。Controller用于创建、运…

CSS常用属性

目录 1.CSS是什么&#xff1f; 2.基本语法 3.引入方式 1.内部样式表 2.行内样式表 3.外部样式 4.基础选择器 1.标签选择器 2.类选择器 3.id选择器 4.通配符选择器 基础选择器总结 5.复合选择器 1.后代选择器 2.子选择器 3.并集选择器 4.伪类选择器 1) 链接伪类…

行业风向:国产新能源汽车如何“扬帆起航”闯世界?

历经十余年的积累和发展&#xff0c;受益于国家财政政策的大力支持、行业技术水平的大幅提升、车企研发与营销费用的大力投入等多重因素&#xff0c;我国新能源汽车走向了高速发展阶段&#xff0c;并一举成为全球最大的新能源汽车市场&#xff0c;在续航里程、环境适应性、整车…

Hooks

私人博客 许小墨のBlog —— 菜鸡博客直通车 系列文章完整版&#xff0c;配图更多&#xff0c;CSDN博文图片需要手动上传&#xff0c;因此文章配图较少&#xff0c;看不懂的可以去菜鸡博客参考一下配图&#xff01; 系列文章目录 前端系列文章——传送门 后端系列文章——传送…

以太网交换机的生成树协议STP

以太网交换机的生成树协议STP 笔记来源&#xff1a; 湖科大教书匠&#xff1a;以太网交换机的生成树协议STP 声明&#xff1a;该学习笔记来自湖科大教书匠&#xff0c;笔记仅做学习参考 如下图所示以太网中出现链路故障导致部分主机间无法进行通信 如何提高以太网的可靠性&am…

Elasticsearch:复制 - replication

在本篇文章中&#xff0c;我们来讲述 Elasrticsearch 集群中重要的一个概念 replication&#xff0c;也即复制。 了解 Elasticsearch 中的分片复制 默认情况下&#xff0c;索引由单个分片组成&#xff0c;但是如果存储分片的节点出现故障&#xff08;例如磁盘故障&#xff09;…

【Python基础】- 基础数据类型(下)

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

一文吃透Java并发高频面试题

内容摘自我的学习网站&#xff1a;topjavaer.cn 分享50道Java并发高频面试题。 线程池 线程池&#xff1a;一个管理线程的池子。 为什么平时都是使用线程池创建线程&#xff0c;直接new一个线程不好吗&#xff1f; 嗯&#xff0c;手动创建线程有两个缺点 不受控风险频繁创…

typescript 相关概念

TypeScript 开发环境搭建 下载Node.js 14.15.1版本64位&#xff1a;https://nodejs.org/dist/v14.15.1/node-v14.15.1-x64.msi node官网&#xff1a; Node.js 安装Node.js 使用npm全局安装typescript 进入命令行 输入: npm i -g typescript 创建一个ts文件 使用tsc对ts文件…

从0-1一起学习live555设计思想之一 基础运行环境 + 任务调度

系列文章目录 文章目录 系列文章目录前言一、基础组件总览二、UsageEnvironment三、BasicUsageEnvironment0四、BasicUsageEnvironment五、TaskScheduler六、BasicTaskScheduler0七、DelayQueue八、BasicTaskScheduler九、基础调度总结总结前言 一、基础组件总览 本篇开始分析…

【OpenCV • c++】滑动条的创建和使用

&#x1f680; 个人简介&#xff1a;CSDN「博客新星」TOP 10 &#xff0c; C/C 领域新星创作者&#x1f49f; 作 者&#xff1a;锡兰_CC ❣️&#x1f4dd; 专 栏&#xff1a;【OpenCV • c】计算机视觉&#x1f308; 若有帮助&#xff0c;还请关注➕点赞➕收藏&#xff…

【Linux网络服务】Nginx Rewrite重写模块

Nginx Rewrite 一、常用的Nginx 正则表达式二、location 匹配的范围2.1location实验 三、rewrite模块3.1rewrite跳转3.2rewrite执行顺3.3flag标记说明3.4rewrite中常用的全局变量3.5rewrite实验3.5.1 基于域名的跳转3.5.2基于客户端IP访问跳转3.5.3基于旧域名跳转到新域名后面加…

基于深度学习的高精度海洋生物检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于深度学习的高精度海洋生物检测识别系统可用于日常生活中检测与定位海洋生物目标&#xff08;海胆&#xff1a;echinus&#xff0c;海参&#xff1a;holothurian&#xff0c;扇贝&#xff1a;scallop&#xff0c;海星&#xff1a;starfish&#xff09;&…

MySQL数据库 番外.聚合函数

前言&#xff1a; 聚合函数是分组查询中一个重要的组成部分&#xff0c;想要利用分组查询&#xff0c;就要对聚合函数有不错的掌握&#xff0c;因此我们在这里开一篇番外&#xff0c;讲解SQL语法中的聚合函数 聚合函数&#xff1a; 聚合函数是SQL中一种特殊的函数&#xff0c;…

Oracle中的数据导出(4)

目录 法一&#xff1a;使用SQL plus命令脚本 法二&#xff1a;使用PLSQL Developer工具 前几篇文章描述了如何将Oracle中的数据导出到库外&#xff0c;但是导出的数据结果都是文本文档&#xff0c;这样页面查看不和谐&#xff0c;编辑又略显麻烦。因此这篇文章将描述如何将Or…

60题学会动态规划系列:动态规划算法第二讲

都是路径问题~ 文章目录 1.不同路径2.不同路径II3.礼物的最大价值4.下降路径最小和5.最小路径和 1.不同路径 力扣链接&#xff1a;力扣 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一…

异常检测学习笔记 一、异常检测及基本统计

一、什么是异常? 1、异常的定义 异常是指与其他数据有很大不同的数据。异常现象是“一种与其他观测结果大相径庭的观测结果,以至于人们怀疑它是由不同的机制产生的。”,也被称为“异常”或“离经叛道”。 所有观测值 = 正常数据 + 异常值 异常值 = 噪声 + 异常 噪声 = 人们…