java实现日历窗口小程序

网友投稿 251 2022-07-24


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

标签:java基础

功能:

1.按月翻页。

2.输入月份年份,直接跳转。

效果图:

//CalendarMainClass.java

public class CalendarMainClass{

public static void main(String args[]){

CalendarFrame frame = new CalendarFrame();

frame.setBounds(100, 100, 360, 300);

frame.setVisible(true);

frame.setYearAndMonth(2017, 12);

}

}

//CalendarBean.java

import java.util.Calendar;

public class CalendarBean{

int year = 2017, month = 12;

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]; //日历最多可达6行

Calendar rili = Calendar.getInstance();

rili.set(year, month - 1, 1); //模拟翻日历

int weekDay = rili.get(Calendar.DAY_OF_WEEK) - 2; ///计算出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;

}

//if(weekDay == 0) weekDay += 7;

for(int i = 0; i < weekDay; i++) a[i] = " "; //日历顺序输出,格式控制

for(int i = weekDay, n = 1; i < weekDay + day; i++){

iNCMisy a[i] = String.valueOf(n);

n++;

}

for(int i = weekDay + day; i < a.length; i++) a[i] = " ";

return a;

}

}

//CalendarFrame.java

import java.util.*;

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import javax.swing.border.*;

public class CalendarFrame extends JFrame implements ActionListener{

JLabel labelDay[] = new JLabel[42];

JButton titleName [] = new JButton[7];

String name [] = {"一", "二", "三", "四", "五", "六", "日"};

JButton nextMonth, previousMonth, go;

JTextField textYear, textMonth;

CalendarBean calendar;

JLabel showMessage = new JLabel("", JLabel.CENTER);

int year = 2017, month = 12;

public CalendarFrame(){

JPanel pCenter = new JPanel();

pCenter.setLayout(new GridLayout(7, 7));

for(int i = 0; i < 7; i++){

titleName[i] = new JButton(name[i]);

titleName[i].setBorder(new SoftBevelBorder(BevelBorder.RAISED));

pCenter.add(titleName[i]);

}

for(int i = 0; i < 42; i++){

labelDay[i] = new JLabel("", JLabel.CENTER);

labelDay[i].setBorder(new SoftBevelBorder(BevelBorder.RAISED));

pCenter.add(labelDay[i]);

}

calendar = new CalendarBean();

nextMonth = new JButton("next");

previousMonth = new JButton("previous");

go = new JButton("goto");

textYear = new JTextField(4);

textMonth = new JTextField(2);

nextMonth.addActionListener(this);

previousMonth.addActionListener(this);

go.addActionListener(this);

JPanel pNorth = new JPanel(), pSouth = new JPanel();

pNorth.add(previousMonth);

pNorth.add(showMessage);

pNorth.add(nextMonth);

pSouth.add(textYear);

pSouth.add(textMonth);

pSouth.add(go);

add(pCenter, BorderLayout.CENTER);

add(pNorth,iNCMisy BorderLayout.NORTH);

add(pSouth, BorderLayout.SOUTH);

setYearAndMonth(year, month);

setDefaultCloseOperation(DISPOSE_ON_CLOSE);

}

public void setYearAndMonth(int y, int m){

calendar.setYear(y);

calendar.setMonth(m);

String day[] = calendar.getCalendar();

/*

for(int i = 0; i < 42; i++){

if(i % 7 == 0) System.out.println("");

System.out.printf("%4s", day[i]);

}

*/

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

showMessage.setText(calendar.getYear() + "/" + calendar.getMonth());

}

public void actionPerformed(ActionEvent e){

if(e.getSource() == nextMonth){ //下一个月

month += 1;

if(month > 12){

year += 1;

month = 1;

}

calendar.setYear(year);

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 -= 1;

if(month < 1){

year -= 1;

month = 12;

}

calendar.setYear(year);

calendar.setMonth(month);

String day[] = calendar.getCalendar();

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

}

else if(e.getSource() == go){ //跳转

year = Integer.parseInt(textYear.getText().trim());

month = Integer.parseInt(textMonth.getText().trim());

calendar.setYear(year);

calendar.setMonth(month);

String day[] = calendar.getCalendar();

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

}

showMessage.setText(calendar.getYear() + "/" + calendar.getMonth());

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java编写实现窗体程序显示日历
下一篇:使用Spring中的scope配置和@scope注解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~