JAVA自定义日期选择器

news2025/1/14 0:43:17

下载jar地址,

https://toedter.com/jcalendar/ jar包下载地址

依赖包如下图所示:

整个项目代码已经上传到CSDN

https://download.csdn.net/download/qq_30273575/89241601?ydreferer=aHR0cHM6Ly9tcC5jc2RuLm5ldC9tcF9kb3dubG9hZC9tYW5hZ2UvZG93bmxvYWQvVXBEZXRhaWxlZA%3D%3D

package utils;

import javax.swing.*;
import com.toedter.calendar.JDateChooser;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;

public class GoSaveMain extends JFrame implements ActionListener{
    
    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    //https://www.cnblogs.com/lihello/p/12795948.html 下载使用显示日期的jar包
    // https://toedter.com/jcalendar/ jar包下载地址
    
    //其他参考 https://blog.csdn.net/u012426327/article/details/77712882
    
    
    private JLabel date1Lable;
    private JLabel date2Lable;
    private JLabel amountLable;
    private JLabel interestRateLable;
    private JLabel reslutLable;

    
    private JTextField amountField;
    private JTextField interestRateField;
    private JTextField resultField;
    private JDateChooser dateChooser;
    private JDateChooser dateChooser2;
    
    private JButton runButton;
    private JCheckBox simulateBox;
    
    public GoSaveMain() {
        // 创建JDateChooser组件
        dateChooser = new JDateChooser();
        dateChooser2 = new JDateChooser();
        // 设置JDateChooser的宽度
        dateChooser.setPreferredSize(new Dimension(100, dateChooser.getPreferredSize().height));
        dateChooser2.setPreferredSize(new Dimension(100, dateChooser.getPreferredSize().height));
        
        JPanel date_panel = new JPanel();
        date_panel.setLayout(new GridLayout(6,2,1,1)) ;
        
        date1Lable = new JLabel("StartDate");
        date2Lable = new JLabel("EndDate");
        amountLable = new JLabel("Amount");
        reslutLable = new JLabel("Result");
        amountField=new JTextField("") ;
        interestRateLable = new JLabel("Rate");
        interestRateField=new JTextField("") ;
        resultField=new JTextField("") ;
        runButton = new JButton("Calculate") ;
        simulateBox = new JCheckBox("模拟时间8点前");
        date_panel.add(date1Lable);
        date_panel.add(dateChooser);
        date_panel.add(date2Lable);
        date_panel.add(dateChooser2);
        date_panel.add(amountLable);
        date_panel.add(amountField);
        date_panel.add(interestRateLable);
        date_panel.add(interestRateField);
        date_panel.add(simulateBox);
        date_panel.add(runButton);
        date_panel.add(reslutLable);
        date_panel.add(resultField);
        runButton.addActionListener(this);
        
        // 创建一个FlowLayout布局
        this.setLayout(new FlowLayout());
 
        // 将JDateChooser添加到JFrame
        this.add(date_panel);
 
        // 设置JFrame的其他属性
        this.setTitle("计算Gosave利息");
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setSize(300, 300);
        this.setLocationRelativeTo(null);
        this.setVisible(true);
        
        this.addWindowListener(new WindowAdapter() {

            @Override
            public void windowClosing(WindowEvent e) {
                int flag = JOptionPane.showConfirmDialog(null, "要退出该程序吗?","友情提示",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);
                if(flag==JOptionPane.YES_OPTION) {
                    System.exit(0);
                }else {
                    return;
                }
            }
        });
    }
 
    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            new GoSaveMain();
        });
    }


    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
        if(e.getSource()==runButton){
            System.out.println("\nStart to Calculate interest!!!");
            String  amount = this.amountField.getText();
            String interestRate = this.interestRateField.getText();
            Date  dateChooser= this.dateChooser.getDate();
            Date  dateChooser2= this.dateChooser2.getDate();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            String startDate = sdf.format(dateChooser);
            String endDate = sdf.format(dateChooser2);
            System.out.println(amount);
            System.out.println(interestRate);
            System.out.println(startDate);
            System.out.println(endDate);
            
            String checkBoxValue = "";
            if(simulateBox.isSelected()) {
                checkBoxValue = "true";
            }else {
                checkBoxValue = "false";
            }
            
            HashMap<String, String> map = new HashMap<String, String>();
            map.put("startDate", startDate);
            map.put("endDate", Common.getRealEndDate(endDate, getMinusDays(checkBoxValue)));
            map.put("amount", amount);
            map.put("interestRate", interestRate);
            map.put("checkBoxValue", checkBoxValue);
            
            
            CalculateUtils calculateUtils = new CalculateUtils(map);
            double value = calculateUtils.getResult();
            this.resultField.setText(""+value);
        }
    }
    
    public int getMinusDays(String checkBoxValue) {
        int minus_days =0;
        if(Common.getHoursThisTime()<8) {
            minus_days =1;
        }
        if(checkBoxValue.contains("true")){
            minus_days =1;
        }
        System.out.println("minus_days: "+minus_days);
        return minus_days;
    }
    

}
 

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

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

相关文章

由异常的测试眼图引发的深入思考

最近的信号测试中&#xff0c;出现了“双眼皮”的眼图测试效果&#xff0c;直觉告诉我&#xff0c;这肯定是有问题的&#xff0c;于是&#xff0c;脑海中就出现了很多的场景假设&#xff0c;并将可能的导致因素总结如下&#xff1a; 1. PCB通道阻抗设计不匹配&#xff0c;负载端…

Windows 本地直接使用 SSH,SFTP 以及 SFTP下载文件到 Windows/mac 本地或上传(没有客户端时)

windows 本地打开 ssh 以及 sftp 等的方式 1.win(windows图标那个键) r 直接搜 然后从打开的位置运行 如果是打开 sftp 前面的 ssh 换一下成sftp 就行 直接从地址栏输入也可以直接转过去 通过 windows 的工具直接访问 sftp 后将文件下载到自己的windows 或 mac 上 先通过…

Pandas 2.2 中文官方教程和指南(二十五·一)

原文&#xff1a;pandas.pydata.org/docs/ 食谱 原文&#xff1a;pandas.pydata.org/docs/user_guide/cookbook.html 这是一个简短而精炼的示例和链接存储库&#xff0c;包含有用的 pandas 示例。我们鼓励用户为此文档添加内容。 在这一部分添加有趣的链接和/或内联示例是一个…

《Spring-MVC》系列文章目录

简介 Spring MVC是一种基于Java的实现MVC设计模式的请求驱动类型的轻量级Web框架&#xff0c;它通过把Model&#xff08;模型&#xff09;、View&#xff08;视图&#xff09;、Controller&#xff08;控制器&#xff09;分离&#xff0c;将web层进行职责解耦&#xff0c;把复杂…

计算机视觉大项目(1)-水果分级系统

项目来源&#xff1a;河北大学计算机视觉课程-杨老师. 一共有四个标题&#xff0c;本篇博客只完成前两问。 目录 实验目的: 实验内容&#xff1a; 实验步骤&#xff1a; 1.水果图像的分割 >掩膜图像Mask 是什么&#xff1f; >改进:去除反光部分的影响 2&#xf…

打造智能化且用户体验上乘的企业展馆需关注哪些细节?

随着科技的进步&#xff0c;传统展馆的设计理念和展陈方式已逐渐暴露出不足&#xff0c;为了让企业展馆在新时代焕发出更加璀璨的光彩&#xff0c;我们亟待在展馆的创新设计、智能化展示以及人性化布局等多个层面进行深入探索。那么&#xff0c;究竟需要精心打磨哪些细节&#…

【网站项目】家庭理财系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

(css)鼠标移出样式不变

(css)鼠标移出样式不变 需求&#xff1a;列表鼠标移入切换样式&#xff0c;移出保持不变 <divv-for"(item, index) of newsList":key"index"class"news-list":class"{active : change index}"tabindex"1"mouseenter&quo…

Webshell绕过技巧分析之-base64编码和压缩编码

在网络安全运营&#xff0c;护网HVV&#xff0c;重保等活动的过程中&#xff0c;webshell是一个无法绕过的话题。通常出现的webshell都不是以明文的形式出现&#xff0c;而是针对webshell关键的内容进行&#xff0c;混淆&#xff0c;编码来绕过网络安全产品&#xff0c;例如IDS…

好用到哭的AI工具,你知道几个?

随着人工智能技术的不断发展&#xff0c;越来越多的AI工具被广泛应用到我们的日常生活和工作中&#xff0c;给人们带来了极大的便利。本文将探讨人们在使用AI工具时&#xff0c;最喜欢的和认为最好用的工具是哪些&#xff0c;并展示AI技术的实际应用和影响。 让我们关注一下AI…

聊聊Mysql的两阶段提交

从图中可看出&#xff0c;事务的提交过程有两个阶段&#xff0c;就是将 redo log 的写入拆成了两个步骤&#xff1a;prepare 和 commit&#xff0c;中间再穿插写入bin log&#xff0c;具体如下&#xff1a; prepare 阶段&#xff1a;将 事务的修改写入到 redo log&#xff0c;同…

SpringBoot之自定义注解参数校验

SpringBoot之自定义注解参数校验 为什么要自定义注解 我这里先引入一个例子&#xff0c;就比如我现在要写文章&#xff0c;文章也许写完正要发布&#xff0c;也可以是还没写完正要存草稿&#xff0c;前端往后端发送数据&#xff0c;如果前端的state不是草稿或者已发布状态&…

HTML:认识HTML及基本语法

目录 1. HTML介绍 2. 关于软件选择和安装 3. HTML的基本语法 1. HTML介绍 HyperText Markup Language 简称HTML&#xff0c;意为&#xff1a;超文本标记语言 超文本&#xff1a;是指页面内可以包含的图片&#xff0c;链接&#xff0c;声音&#xff0c;视频等内容 标记&am…

【开发者好用插件】基于百度文心大模型,前端,后端,开发者的辅助神器

基于百度文心大模型&#xff0c;前端&#xff0c;后端&#xff0c;开发者的辅助神器&#xff0c;百度AI代码生成器&#xff0c;个人用户免费&#xff0c;可以提问&#xff0c;写注释&#xff0c;等等&#xff0c;新手必备神器啊 智能代码助手&#xff08;Baidu Comate&#xf…

【每周精选资讯 | 第 7 期】2024-04-22 ~ 2024-04-28

目录 前言生数科技与清华联合推出视频大模型Vidu性能媲美Llama3&#xff0c;阿里巴巴通义千问开源 Qwen1.5-110B 模型黄仁勋亲自向OpenAI交付DGX H200GitLab 发布人工智能编程助手 Duo Chat商汤升级“日日新5.0”大模型&#xff0c;对标GPT-4Turbo阿里发布职业趋势报告&#xf…

中伟视界:矿山智能管控平台关键功能介绍,AI算法、告警通知、问题解决

矿山智能管控平台的关键功能介绍如下&#xff1a; 1.1. 主界面功能介绍 主界面分为六大区域&#xff0c;分别是设备列表、重点区域、功能区、告警列表、菜单区等&#xff0c;分别对应不同的功能和操作。 1.2. 平台功能 平台包含11条特色功能&#xff0c;分别为&#xff1a…

免费通配符证书申请

通配符证书是一种 SSL/TLS 证书&#xff0c;可用于保护多个域&#xff08;主机&#xff09;&#xff0c;由域名字段中的通配符 (*) 指示。 如果您有很多需要保护的域或子域&#xff0c;这会很有帮助&#xff0c;因为它可以节省您的时间和金钱。 本文将讨论通配符证书、它们的工…

ENVI下基于劈窗算法从MODIS数据中反演海表温度

劈窗算法最初是为反演海面温度开发的&#xff0c;具体地说是针对NOAA/AVHRR的4和5通道设计的&#xff0c;后来也被用来反演地表温度&#xff0c;这种算法较成熟&#xff0c;精度也高。劈窗算法以地表热辐射传导方程为基础&#xff0c;利用10~13μm 大气窗口内&#xff0c;两个相…

Ubuntu 24.04安装搜狗输入法-解决闪屏问题

问题描述 在Ubuntu 24.04 LTS系统中按照官方安装指导《Ubuntu20.04安装搜狗输入法步骤》安装搜狗输入法后&#xff1a; 会出现屏幕闪烁&#xff0c;无法正常使用的问题&#xff1b;系统搜索框和gnome-text-editor无法使用搜狗输入法&#xff1b; 原因分析 闪屏可能是Ubuntu…

ES6之rest参数、扩展运算符

文章目录 前言一、rest参数二、扩展运算符 1.将数组转化为逗号分隔的参数序列2.应用总结 前言 rest参数与arguments变量相似。ES6引入rest参数代替arguments&#xff0c;获取函数实参。扩展运算符能将数组转化为参数序列。 一、rest参数 function namelist1() {console.log(ar…