JAVA自定义日期选择器

下载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.mfbz.cn/a/582522.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Swift-31-泛型和类型操作

泛型 Swift泛型(generics) 让我们写出的类型和函数可以使用对于我们或编译器都未知的类型。 很多内建类型(包括可空类型、数组和字典)都是用泛型实现的&#xff0c;比如数组和一些集合就是用泛型方式来实现的。 一种运行时进行类型检查的技术&#xff0c;效率高但是不安全。在…

Java零基础入门到精通_Day 8

1.API 应用程序接口 Java API:指的就是JDK 中提供的各种功能的Java类这些类将底层的实现封装了起来&#xff0c;我们不需要关心这些类是如何实现的&#xff0c;只需要学习这些类如何使用即可&#xff0c;我们可以通过帮助文档来学习这些API如何使用。 2. String String 类…

记录-执行Grad-CAM所遇问题

在执行Grad-CAM所遇问题 1&#xff09; 修改后解决 2&#xff09; 修改后解决&#xff0c;因为numpy需要在cpu上进行&#xff0c;所有需要加上.cpu() 3&#xff09;plt.matshow(heatmap)出错 原因是get_heatmap()中的mean_gradients torch.mean(gradients, dim[0, 2, 3]…

Spring IOC(一)

1. Spring IOC入门 1.1 什么是Spring IoC IoC&#xff08;Inversion of Control&#xff09;&#xff0c;即控制反转&#xff0c;是一种设计原则。简单来说&#xff0c;IoC就是将程序的某种传统控制流程反转了。 在Spring框架中&#xff0c;控制反转体现在对象的创建和管理上。…

面试:Redis(缓存穿透、缓存击穿、缓存雪崩、双写一致、Redis的持久化、Redis的过期策略、Redis的数据淘汰策略、Redis的分布式锁、Redis的集群方案、Redis网络模型)

目录 一、缓存穿透 1、解决方案一&#xff1a; 2、解决方案二&#xff1a; 二、缓存击穿 1、解决方案一&#xff1a; 2、解决方案二&#xff1a; 三、缓存雪崩 1、解决方案一&#xff1a; 2、解决方案二&#xff1a; 3、解决方案三&#xff1a; 4、解决方案四&#…

扭蛋机小程序带来了什么优势?扭蛋机收益攻略

在当下的潮流消费时代&#xff0c;人们对潮玩也日益个性化&#xff0c;扭蛋机作为一种新型的娱乐消费模式&#xff0c;深受大众喜爱。扭蛋机的价格低&#xff0c;各个年龄层的玩家都可以进行购买&#xff0c;潜在玩家量非常大。扭蛋机商品主打热门IP周边等&#xff0c;种类繁多…

Leetcode-面试题 02.02. 返回倒数第 k 个节点

目录 题目 图解 代码 面试题 02.02. 返回倒数第 k 个节点 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/kth-node-from-end-of-list-lcci/description/ 题目 实现一种算法&#xff0c;找出单向链表中倒数第 k 个节点。返回该节点的值。 注意&…

Q1季度方便速食行业线上市场(京东天猫淘宝)销售数据分析

方便食品行业作为快速消费品市场的重要组成部分&#xff0c;近几年表现出较为强劲的发展势头。当然&#xff0c;每年的食品安全问题也在一定程度上影响着市场的良性健康发展。那么&#xff0c;今年Q1季度方便食品的线上发展如何&#xff1f; 根据鲸参谋数据显示&#xff0c;Q1…

python程序设计语言超详细知识总结

Python 首先 python 并不是简单&#xff0c;什么语言都有基础和高级之分&#xff0c;要想掌握一门语言&#xff0c;必须把高级部分掌握才行。 HelloWorld helloWorld.py print(hello, world)数据类型与变量 变量的数据类型数据类型描述变量的定义方式整数型 (int)整数&…

【Java EE】MyBatis 入门

文章目录 &#x1f340;什么是MyBatis?&#x1f332;如何使用MyBatis&#x1f338;引人Mybatis的相关依赖&#x1f338;配置Mybatis(数据库连接信息)&#x1f338;编写SQL语句(注解/XML)&#x1f338;单元测试 &#x1f333;打印日志 &#x1f340;什么是MyBatis? MyBatis是…

2024年最新linux安装harbor

linux安装harbor Harbor官方介绍这里就不照搬了&#xff0c;说直白点&#xff1a;Harbor就是私有的 Docker Hob 镜像仓库。 前置条件&#xff1a;安装好docker,docker-compose 1、安装harbor离线包&#xff08;在线安装形式不稳定&#xff0c;由于网络原因中间可能中断&…

黑马面试篇1(续)

黑马面试篇1-CSDN博客&#xff08;续集&#xff09; 六、消息中间件篇 6.1 RabbitMQ 使用场景&#xff1a; 异步发送&#xff08;验证码、短信、邮件…&#xff09;MYSQL和Redis , ES之间的数据同步分布式事务削峰填谷… 6.2 Kafka

python:reportlab 生成pdf:基本用法。

1.首先&#xff0c;打开cmd&#xff0c;安装reportlab pip install -i https://pypi.tuna.tsinghua.edu.cn/simple reportlab #从清华镜像安装更快 然后就可以使用其基本用法。 from reportlab.lib.pagesizes import letter from reportlab.pdfgen import canvasdef genera…

字节5面挂,恶心到了。。。

字节五面 今天脉脉看到一篇帖子&#xff1a; 楼主是 tx 的前员工&#xff0c;在字节五面&#xff08;加轮&#xff09;被挂后&#xff0c;认定&#xff08;或许私下做了一些调查&#xff09;是字节 HR 向 tx 背调&#xff0c;然后被前同事捏造虚假信息&#xff0c;导致的面试失…

create-react-app项目配置@绝对路径快捷方式

为什么要配置&#xff1f; 因为可能后面我们的项目很很多很大&#xff0c;项目层级比较复杂&#xff0c;为了防止文件路径引用的错误&#xff0c;我们可以使用/这种方式来减少犯错误的可能。 首先介绍---CRACO 什么是CRACO&#xff1f; 要在使用 Create React App 时自定义大…

【Java并发知识总结 | 第九篇】ThreadLocal总结

文章目录 9.ThreadLocal总结9.1ThreadLocal是什么&#xff1f;9.2ThreadLocal的作用&#xff1f;9.3使用ThreadLocal9.4ThreadLocal原理9.5ThreadLocal问题&#xff1a;内存泄漏/溢出9.6为什么key要设计成弱引用&#xff1f;9.7ThreadLocal中的强弱引用关系9.8ThreadLocalMap怎…

【并发编程实战】并发的编程引发的三个问题--可见性/原子性/顺序性

前言 硬件和软件的发展都是相互的&#xff0c;硬件的发展&#xff0c;多核CPU,缓存&#xff0c;进程&#xff0c;线程&#xff0c;我们享受CPU带来的高性能的同时&#xff0c;必定同时也伴随着风险。为了解决这些&#xff0c;则出现了一些理论和实践 问题 问题一 缓存导致的…

最佳WordPress外贸主题推荐(2024)

WordPress是一个非常受欢迎的建站平台&#xff0c;它具有易用性&#xff0c;并提供了许多功能强大的主题和插件。如果你计划建立一个外贸独立站商城&#xff0c;选择一个适合的WordPress外贸主题至关重要。以下是一些外贸主题应具备的特点&#xff1a; 1. 欧美风格&#xff1a…

python代码实现kmeans对鸢尾花聚类

导入第三方库和模型 from sklearn import datasets import numpy as np import matplotlib.pyplot as plt from sklearn.cluster import KMeans2、创建画图函数 def draw_result(train_x, labels, cents, title):n_clusters np.unique(labels).shape[0]#获取类别个数color …

美富特 | 邀您参加2024全国水科技大会暨技术装备成果展览会

王涛 四川美源环能科技有限公司 技术总监 报告题目&#xff1a;绿色智慧水岛如何助力工业园区污水及再生水资源化利用降碳增效 拥有十余年的环保行业从业经验&#xff0c;对各类前沿物化、生化及膜技术均有丰富的研发、设计及应用经验&#xff0c;先后参与多项重点核心技术…
最新文章