Java实现窗体程序显示日历表

本文实例为大家分享了Java实现窗体程序显示日历表的具体代码,供大家参考,具体内容如下

实训要求:

1.简单实现日历功能,能查看前月后月的日历功能。
2.使用JTable 组件显示日历。

参考结果:

代码:

CalendaBean.java

import java.util.Calendar;
 
public class CalendaBean {
    Test test;
    String[] day;
 
    int year = 2017, month = 7;
 
    public void setYear(int year) {
        this.year = year;
    }
 
    public void setMonth(int month) {
        this.month = month;
    }
 
    public int Last() {
        month--;
        if (month == 0) {
            month = 12;
            year--;
        }
        return month;
    }
 
    public int Next() {
        month++;
        if (month == 13) {
            month = 1;
            year++;
        }
        return month;
    }
 
    public String[] getCalendar() {
        String[] a = new String[42];
        Calendar rili = Calendar.getInstance();
        rili.set(year, month - 1, 1);
        int weekDay = rili.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 = 0; i < weekDay; i++)
            a[i] = " ";
        for (int i = weekDay, n = 1; i < weekDay + day; i++) {
            a[i] = String.valueOf(n);
            n++;
        }
        for (int i = weekDay + day; i < a.length; i++)
            a[i] = " ";
        return a;
    }
}

Change.java

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
import javax.swing.JLabel;
 
public class Change implements ActionListener {
    CalendaBean c;
    JLabel now;
    Test test;
 
    public void actionPerformed(ActionEvent e) {
        String str = e.getActionCommand();
        if (str.equals("lastmonth")) {
            c.Last();
        } else if (str.equals("nextmonth")) {
            c.Next();
        }
        test.Rili();
        now.setText("日历 :" + c.year + "年" + c.month + "月");
    }
 
}

Test.java

import java.awt.*;
import java.awt.event.*;
 
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
 
public class Test extends JFrame {
    JButton bx, by;
    CalendaBean cb = new CalendaBean();
    Change change = new Change();
    DefaultTableModel model;
    String[] label;
    JLabel now;
    JTable table = new JTable();
    JScrollPane pane = new JScrollPane();
    Object[] columnNames = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
    Object[][] rowData = { { null, null, null, null, null, null, null },
            { null, null, null, null, null, null, null },
            { null, null, null, null, null, null, null },
            { null, null, null, null, null, null, null },
            { null, null, null, null, null, null, null },
            { null, null, null, null, null, null, null }, };
 
    public static void main(String[] args) {
        Test frame = new Test();
        frame.setSize(500, 400);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setTitle("日历");
        frame.setVisible(true);
 
    }
 
    public Test() {
        change.test = this;
        int year, month;
        setLayout(new BorderLayout());
        JPanel pNorth = new JPanel();
        cb = new CalendaBean();
        change.c = cb;
        bx = new JButton("上月");
        by = new JButton("下月");
        bx.setActionCommand("lastmonth");
        by.setActionCommand("nextmonth");
        bx.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                change.actionPerformed(e);
 
            }
        });
        by.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                change.actionPerformed(e);
            }
        });
        pNorth.add(bx);
        pNorth.add(by);
 
        Rili();
        model = new DefaultTableModel(rowData, columnNames);
 
        table = new JTable(model);
        table.setRowHeight(38);
        table.getTableHeader().setResizingAllowed(false);
 
        pane = new JScrollPane(table);
        JPanel pSouth = new JPanel();
        now = new JLabel();
        now.setText("日历:" + cb.year + "年" + cb.month + "月");
        change.now = now;
        pSouth.add(now);
        add(pNorth, BorderLayout.NORTH);
        add(pane, BorderLayout.CENTER);
        add(pSouth, BorderLayout.SOUTH);
    }
 
    public void Rili() {
 
        String[] a = cb.getCalendar();
        int x = 0;
        if (model != null) {
            model.setRowCount(0);
        }
        for (int i = 0; i < 6; i++) {
            for (int j = 0; j < 7; j++) {
                rowData[i][j] = a[x];
                x++;
            }
            if (model != null)
                model.addRow(rowData[i]);
        }
    }
}

运行结果

说明:这个程序与前几天上传的日历显示表差不多,只是改了中间的组件,原本以为是很简单的事,结果做的时候才发现其中的难点,初学Java还有很多不懂的地方,幸好有大神的解答,自己还有很多需要学习的地方。

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

(0)

相关推荐

  • Java编写日历表的3种方式

    大家好,今天我和大家分享一下用Java编写日历表,我用了3种方式实现这一功能的. 首先我们来看看一个日历表有什么特征.在这里我就把我电脑上的日历表截下来分析一下 我们从上向下看:这个日历表显示了年份,月份,星期数即星期一到星期日,每一天对应一个星期数,天数每隔七天换一下行,当月的总天数.还有一个就是每个月的第一天是接着上个月的最后一天的. 我们发现我们想要创建一个日历表就只需要知道年份,月份和该月份的第一天是星期几还有就是该月份的总天数就行. 年份和月份是我们自己设置要查看的年份和月份,每个月的

  • java万年历,获取该年月日历表

    这篇文章应用java技术输入年份和月份获取该年月日历表,下面通过一段代码给大家做展示: 输入年份和月份,打印出这个月的日历表     1.1900年1月1日是星期一     2.计算输入的年份距离1900年有多少天再计算当年1月1日距这个月有多少天     3.总天数%7得出从星期几开始     注:计算机中的时间最小到1900年,此外UNIX系统认为1970年1月1日0点是时间纪元.     so,在本程序中不考了1900年以前的年份了.有兴趣的可以自己研究下. import java.uti

  • Java实现窗体程序显示日历表

    本文实例为大家分享了Java实现窗体程序显示日历表的具体代码,供大家参考,具体内容如下 实训要求: 1.简单实现日历功能,能查看前月后月的日历功能.2.使用JTable 组件显示日历. 参考结果: 代码: CalendaBean.java import java.util.Calendar;   public class CalendaBean {     Test test;     String[] day;       int year = 2017, month = 7;       p

  • Java实现窗体程序显示日历

    本文实例为大家分享了Java实现窗体程序显示日历的具体代码,供大家参考,具体内容如下 实训要求: 1.使用BorderLayout 进行总体布局 2.在North 位置放置包含两个按钮( 上月和下月)的Panel 3.在South 位置放置一个Label 用于显示当前年份和月份 4.在Center 位置放置一个显示日历的Panel 5.显示日历的Panel 设置7 行7 列的GridLayout 布局,其中第1行放置7个按钮显示周“几”,其他6 行放置42 个Label 用于显示期. 6.启动程

  • Java编写实现窗体程序显示日历

    本文实例为大家分享了Java实现窗体程序显示日历的具体代码,供大家参考,具体内容如下 实训要求: 代码: Test类: import java.awt.*;   import java.awt.event.*;   import javax.swing.*;      public class Test extends JFrame {       JButton week1, week2, week3, week4, week5, week6, week7, next, pro;      

  • Java窗体居中显示的2种方法(实例讲解)

    第1种方法: //setSize(300, 200); pack(); // 得到显示器屏幕的宽.高 int width = Toolkit.getDefaultToolkit().getScreenSize().width; int height = Toolkit.getDefaultToolkit().getScreenSize().height; // 得到窗体的宽.高 int windowsWidth = this.getWidth(); int windowsHeight = thi

  • Java Swing实现让窗体居中显示的方法示例

    本文实例讲述了Java Swing实现让窗体居中显示的方法.分享给大家供大家参考,具体如下: Swing组件是AWT组建的增强组件,是功能强大的"轻量级组件".这里来简单介绍一下Swing实现窗体居中显示的方法. 其他不多说,直接上代码! package awtDemo; import java.awt.Toolkit; import javax.swing.JFrame; @SuppressWarnings("serial") public class AppWi

  • java实现五子棋程序

    本文实例为大家分享了java实现五子棋程序的具体代码,供大家参考,具体内容如下 知识点 1.Swing 编程2.ImageIO 类的使用3.图片的绘制 1. Swing的概念 Swing是在java的基础图形化用户界面AWT的基础上扩展的API集 Swing的功能:通过java的代码编写窗口程序,创建图形化界面(GUI) JFrame是Swing的基础类之一 JOptionPane类 showMessageDialog():显示一个消息对话框,主要用来提示信息showConfirmDialog(

  • 简单实现C#窗体程序判断是否闰年

    利用VS2010的C#.NET能够很简单创建一个窗体.同时可以很轻松地为这个窗体布局,添加事件,下面用一个简单的窗体程序,判断是否闰年,来说明这个问题.同时加一个关闭事件,在用户关闭窗体之前弹出对话框询问用户是否关闭此窗体?如下图: 具体做法如下. 1.打开VS2010之后,文件->新建->项目->选择其它语言中的->Visual C# ->Windows->Windows 窗体应用程序 在最下方命名此项目的名称为isLeapyear,之后点确定. 2.之后,双击For

  • C#窗体程序实现全屏及取消全屏步骤

    由于项目需要,需要用vs窗体程序实现播放视频的窗口的全屏和取消全屏. 具体实现界面如图: 这是初始状态,视频框的右上角就是控制全屏的按钮 这是全屏后的状态,此时全屏按钮变成了取消全屏的样式 注:为了界面的美观我的全屏并没有把左边的那些控件也盖住,但是是可以设置的,下边代码部分我会进行讲解. 1.首先说明一下我所用的控件及我的项目中控件的名称,以便大家理解. 显示视频的黑框是一个picturebox即代码中的VideoPlayWnd,全屏/取消全屏是一个button即代码中的button4 2.具

  • Python运行第一个PySide2的窗体程序

    上一章节介绍了PySide2的安装以及如何去启动程序进行页面设计,并且将工具集成到pycharm的扩展工具中去,有2个地方写的不对,用的是pyuic工具,需要改一下,改成pyside2-uic.exe.具体改动点: pycharm扩展工具中的配置也需要调整一下: 上一篇的配置写的是pyqt5的配置,这里主要采用PySide2进行学习. 修改为正确的配置后,鼠标选中ui文件,右键选择扩展工具中的pyside2-uic就可以转换为python脚本. 先看一下我画的一个简单的GUI页面: 保存页面文件

  • Java实现扑克牌程序

    本文实例为大家分享了Java实现扑克牌程序的具体代码,供大家参考,具体内容如下 思路: 在实现之前,先要想好步骤,思路清晰才不会出错. 要实现一副扑克牌,首先要创建这个类,然后有一副扑克牌,之后进行洗牌,抓牌. 1.定义一个Card类 2.实现这个游戏: ①构造一副扑克牌(52张)这里不包含大小王 ②洗牌 ③三个人每个人抓五张牌 代码实现及其细节: 1.定义一个Card类 一张牌中包括两个属性:花色和牌面值 public class MyCard { public char suit; //花色

随机推荐