Java实现简单日历小程序 Java图形界面小日历开发

今天给大家介绍一下如何用Java swing开发一款简单的小日历,下面我们来看代码:
首先创建一个CalendarBean类,用于基本的日期计算:

package other1; 

import java.util.Calendar;   

public class CalendarBean
{
    String day[];
    int year=2005,month=0;
    public void setYear(int year)
    {
      this.year=year;
    }   

    public int getYear()
    {
      return year;
    }   

    public void setMonth(int month)
    {
      this.month=month;
    }   

    public int getMonth()
    {
      return month;
    }   

    public String[] getCalendar()
    {
      String a[]=new String[42];
      Calendar date=Calendar.getInstance();
      date.set(year,month-1,1);
      int week=date.get(Calendar.DAY_OF_WEEK)-1;
      int day=0;   

      //判断大月份
      if(month==1||month==3||month==5||month==7
       ||month==8||month==10||month==12)
      {
        day=31;
      }   

      //判断小月
      if(month==4||month==6||month==9||month==11)
      {
        day=30;
      }   

      //判断平年与闰年
      if(month==2)
      {
        if(((year%4==0)&&(year%100!=0))||(year%400==0))
        {
          day=29;
        }   

        else
        {
          day=28;
        }
      }   

      for(int i=week,n=1;i<week+day;i++)
      {
          a[i]=String.valueOf(n) ;
          n++;
      }
      return a;
    }
}

然后再创建一个主界面类,用于界面的实现:

package other1; 

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

public class CalendarFrame extends JFrame implements ActionListener
{
    JLabel labelDay[]=new JLabel[42];
    JTextField text=new JTextField(10);
    JButton titleName[]=new JButton[7];
    JButton button = new JButton();
    String name[]={"日","一","二","三", "四","五","六"};
    JButton nextMonth,previousMonth;
    int year=1996,month=1; //启动程序显示的日期信息
    CalendarBean calendar;
    JLabel showMessage=new JLabel("",JLabel.CENTER);
    JLabel lbl1 = new JLabel("请输入年份:");
    JLabel lbl2=new JLabel("   ");  

    public CalendarFrame()
    {
    setBackground(new Color(0, 128, 128));
      JPanel pCenter=new JPanel();
      pCenter.setBackground(new Color(0, 139, 139)); 

     //将pCenter的布局设置为7行7列的GridLayout 布局。
      pCenter.setLayout(new GridLayout(7,7));   

     //pCenter添加组件titleName[i]
      for(int i=0;i<7;i++)
      {
        titleName[i]=new JButton(name[i]);
        pCenter.add(titleName[i]);
      }   

     //pCenter添加组件labelDay[i]
      for(int i=0;i<42;i++)
      {
        labelDay[i]=new JLabel("",JLabel.CENTER);
        pCenter.add(labelDay[i]);
      }   

      text.addActionListener(this);
      calendar=new CalendarBean();
      calendar.setYear(year);
      calendar.setMonth(month);
      String day[]=calendar.getCalendar();   

      for(int i=0;i<42;i++)
      {
        labelDay[i].setText(day[i]);
      }   

      nextMonth=new JButton("下月");
      previousMonth=new JButton("上月");
      button=new JButton("确定");  

      //注册监听器
      nextMonth.addActionListener(this);
      previousMonth.addActionListener(this);
      button.addActionListener(this);  

      JPanel pNorth=new JPanel(),
      pSouth=new JPanel();
      pNorth.add(showMessage);
      pNorth.add(lbl2);
      pNorth.add(previousMonth);
      pNorth.add(nextMonth);
      pSouth.add(lbl1);
      pSouth.add(text);
      pSouth.add(button);
      showMessage.setText("日历:"+calendar.getYear()+"年"+ calendar.getMonth()+"月" );
      ScrollPane scrollPane=new ScrollPane();
      scrollPane.add(pCenter);
      getContentPane().add(scrollPane,BorderLayout.CENTER);// 窗口添加scrollPane在中心区域
      getContentPane().add(pNorth,BorderLayout.NORTH);// 窗口添加pNorth 在北面区域
      getContentPane().add(pSouth,BorderLayout.SOUTH);// 窗口添加pSouth 在南区域。  

    }   

    public void actionPerformed(ActionEvent e)
    {
      if(e.getSource()==nextMonth)
      {
        month=month+1;
        if(month>12)
        month=1;
        calendar.setMonth(month);
        String day[]=calendar.getCalendar();   

        for(int i=0;i<42;i++)
        {
          labelDay[i].setText(day[i]);
        }
       }
      else if(e.getSource()==previousMonth)
      {
        month=month-1;
        if(month<1)
        month=12;
        calendar.setMonth(month);
        String day[]=calendar.getCalendar();   

        for(int i=0;i<42;i++)
        {
          labelDay[i].setText(day[i]);
        }
       }
      else if(e.getSource()==button)
      {
        month=month+1;
        if(month>12)
           month=1;
        calendar.setYear(Integer.parseInt(text.getText()));
        String day[]=calendar.getCalendar();
        for(int i=0;i<42;i++)
        {
          labelDay[i].setText(day[i]);
        }
      }
     showMessage.setText("日历:"+calendar.getYear()+"年"+calendar.getMonth()+"月" );
    }
}

最后用一个类调用即可:

package other1; 

import javax.swing.JFrame;
import javax.swing.UIManager;  

public class CalendarMainClass
{
    public static void main(String args[])
    {
       try {
         UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); //windows界面风格
       }catch (Exception e) {
        e.printStackTrace();
       }
       CalendarFrame frame=new CalendarFrame();
       frame.setBounds(100,100,360,300);
       frame.setTitle("日历小程序");
       frame.setLocationRelativeTo(null);//窗体居中显示
       frame.setVisible(true);
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

运行结果如下:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 用Java编写经典小程序

    如果是刚接触或者刚学习java,练习一些基础的算法还是必须的,可以提升思维和语法的使用 1.输出两个int数中的最大值 import java.util.Scanner; public class demo { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请依次输入两个整数:a,b(以空格隔开)"); /*比较两个数的大小*/

  • Java中基于Shiro,JWT实现微信小程序登录完整例子及实现过程

    小程序官方流程图如下,官方地址 : https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html : 本文是对接微信小程序自定义登录的一个完整例子实现 ,技术栈为 : SpringBoot+Shiro+JWT+JPA+Redis. 如果对该例子比较感兴趣或者觉得言语表达比较啰嗦,可查看完整的项目地址 : https://github.com/EalenXie/shiro-jwt-applet

  • 拳皇(Java简单的小程序)代码实例

    刚开始学习Java,看完老九君的视频根据他的内容敲的代码,感觉还挺有成就感的,毕竟刚学习Java. package helloasd;import java.util.*; public class hellojava { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("输入名称: "); //用户自己输入名字 String userna

  • Java实现表白小程序

    今天闲来无事,教大家一个哄妹子的小case.我们需要创建一个心形图案,按照心形图案的位置和长度,对所创建的字符串进行截断并在所需的位置上输出,最终能呈现在屏幕上满满的爱心.废话不多说,直接上源码看效果 ~ package ddd; import java.awt.*; import javax.swing.JFrame; public class Cardioid extends JFrame { //获取屏幕大小 private static final int WIDTH = 500; pr

  • Java解密微信小程序手机号的方法

    本文实例为大家分享了Java解密微信小程序手机号的具体代码,供大家参考,具体内容如下 第一步:创建AES解密工具类:代码如下 import org.apache.commons.codec.binary.Base64; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySp

  • java实现验证码小程序

    手动制作java的验证码,具体内容如下 Web应用验证码的组成: (1)输入框 (2)显示验证码的图片 验证码的制作流程: 生成验证码的容器使用 j2ee的servlet 生成图片需要的类: (1) BufferedImage 图像数据缓冲区 (2)Graphic绘制图片 (3)Color获取颜色 (4)Random生成随机数 (5)ImageIO输入图片 具体实现流程: (1)定义一个Servlet,用于生成验证码 (2)定已BufferedImage对象,主要作用就是制作一个图片缓冲区,作为

  • java实现微信小程序登录态维护的示例代码

    相信不少喜欢开发的朋友都已经知道微信小程序是个什么物种了,楼主也是从小程序内测期间就开始关注,并且也写过几个已经上线的微信小程序.但是基本上都是写的纯前端,最近楼主从后端到前端写一个完整的小程序项目,中间碰到了一些问题,楼主会找一些个人觉得有学习价值的点不定时的拿出来跟大家分享,希望对你有一些帮助. 本次就从最基本的微信小程序登录态维护开始吧.小程序官方api文档里面有对登录态的一个完整的解释,并且有相关的代码.想看详情,可以出门右转:https://mp.weixin.qq.com/debug

  • 微信小程序调用微信登陆获取openid及java做为服务端示例

    一.微信小程序 第一步:调用 wx.login获取code 文档地址 第二步:判断用户是否授权读取用户信息 文档地址 第三步:调用wx.getUserInfo读取用户数据 文档地址 第四步:由于小程序后台授权域名无法授权微信的域名,所以我们只能通过我们自己的服务器去调用微信服务器去获取用户信息,故我们将wx.login获取code 和 wx.getUserInfo 获取的encryptedData与iv 通过wx.request 请求传入后台 服务器返回的数据: 小程序代码: //调用登录接口,

  • java实现俄罗斯方块小程序

    这是java课最后做的课程设计,由于java是初学的,所以做的时候有参考一些技术大牛的博客,在此表示感谢. 发在这里跟大家交流学习一下. 如需要完整工程文件.说明文档以及可运行jar文件,下载地址:点击打开链接 RussianBlocksGame.java package RussiaBlocksGame; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.Bor

  • 小程序实现搜索界面 小程序实现推荐搜索列表效果

    本文实例为大家分享了小程序实现搜索界面的具体代码,供大家参考,具体内容如下 效果图: 实现代码: <view class="page"> <view class="page__bd"> <view class="weui-search-bar"> <view class="weui-search-bar__form"> <view class="weui-sear

  • 一个非常简单好用的Python图形界面库(PysimpleGUI)

    前一阵,我在为朋友编写一个源代码监控程序的时候,发现了一个 Python 领域非常简单好用的图形界面库. 说起图形界面库,你可能会想到 TkInter.PyQt.PyGUI 等流行的图形界面库,我也曾经尝试使用,一个很直观的感受就是,这太难用了.就去网上搜搜,看看有没有一些 demo,拿来改改,结果很少有,当时我就放弃了这些图形库的学习,转而使用了 vue+flask 的形式以浏览器网页作为程序界面,因为我会这个,即使实现起来稍微麻烦,但是也快. 那有朋友可能问了:一定要学习图形界面吗? 其实不

  • 微信小程序去哪里找 小程序到底如何使用(附小程序名单)

    微信小程序要去哪里找?又该怎么用?秘密全在这里 微信小程序正式发布 看完你也会玩小程序!  2017年1月9日,是一个值得载入互联网史册的日子. 这一天,零点刚过,张小龙和他的团队,在夜色笼罩下,正式发布了微信小程序. 所以,从这一刻开始,只要有开发者登录小程序后台,并在「开发管理」页面点击了「发布」按钮,就会有一个小程序,降临到这个世界上. 而微信小程序,这个设定为「无处不在」的产品,切切实实地「在」你身边了,并即将给你的生活带来新的变化. 那么,小程序到底是什么?小程序的入口在哪里?小程序到

  • 超详细小程序定位地图模块全系列开发教学

    前言:如果想最大化吸取本文经验,须有小程序开发基础,本文细节比较多(多看注释的提醒内容),请耐心理解,多动手尝试,收获会更加丰富 1.定位系统使用场景及概述 如美团外卖小程序 点定位 点搜索 显而易见,随便一个电商小程序都需要用到定位服务,那么今天我们做一个类似的定位模块 定位模块总览 外部页面 内部页面(下文说的内外部页面就是指这两个) 好了接下来我们开始动手 2.定位外部模块样式 效果 代码 //wxml <view bindtap="getLocation" class=&

  • 如何在微信小程序实现一个幸运转盘小游戏

    本人主要介绍如何在微信小程序里面开发一个幸运转盘的小游戏,里面主要用到javascript和 css 语法,就可以轻松实现一个简单的幸运转盘(以6个奖品区为例). 前言 本次教程需要你掌握一定量 javascript 和 css 基础知识,并且你需要有小程序一定的开发经验,具体需要掌握知识点有: css 的 position.transform.transition.overflow javascript基本随机算法 wxs语法 小程序内置动画api 效果图 小程序开发思路 开发思路有三部分,第

  • 小程序点餐界面添加购物车左右摆动动画

    效果图 动画代码 这里 只提供图中购物车动画代码,不提供以上点餐界面(需要点餐界面 点击这里:Gitee仓库). 在触发代码中使用 this.cartWwing() 调用动画,不理解请访问教程. /** * 点击商品+号购物车摆动 * @return void */ cartWwing: function() { // 创建动画实例(animation) var animation = wx.createAnimation({ duration: 100,//动画持续时间 timingFunct

  • 微信小程序实现登录界面

    微信小程序的登录界面实现,供大家参考,具体内容如下 <view class="container"> <view class="wrapper"> <view class="left-top-sign">LOGIN</view> <view class="welcome"> 欢迎回来! </view> <view class="input-

  • 微信小程序实现猜数字小游戏的实战过程

    目录 功能介绍 效果图  一.首页效果图(index03)的代码 二.开始游戏页面(index)代码 三.游戏规则页面(index01)代码 四.关于其他页面(index02)代码 总结 功能介绍 用户输入1-100之间的数字,根据结果提示用户猜的大小,如果用户猜对可以重新开始(还可以设置猜的次数) 效果图 点击开始游戏界面   游戏规则界面 关于其他界面  我的首页(效果图)使用的是index03 开始游戏使用的是index 游戏规则使用的是index01 关于其他使用的是index02 (创

  • 微信小程序实现登录界面示例

    本文实例为大家分享了微信小程序实现登录界面的具体代码,供大家参考,具体内容如下 注:这里使用的是原生微信小程序 使用wxss和wxml index.wxml文件中代码 <view class="v1">   <!-- v2父容器  子view使用绝对布局 -->   <view class="v2">     <view class="dltext">登录</view>       &l

  • 微信小程序使用ucharts在小程序中加入横屏展示功能的全过程

    目录 前言 实现思路 实现步骤 1. 添加一个按钮用来开启横屏模式 2. 准备一个容器 总结 前言 由于手机屏幕宽度的限制,当数据量较大时,观看体验并不是很好,因此横屏展示的功能就显得必要了,还好ucharts官方提供了横屏展示的功能,可以免去自己手改的麻烦,不过在实现的时候还是需要注意一些地方. 本文只贴出了部分关键实现代码而非全部代码,仅提供思路和实现参考. 实现思路 开启横屏显示的配置如下: opts: { rotate: true, } 现在只需要在页面中提供一个按钮作为入口,动态改变o

随机推荐