setyear java_java制作万年历问题,求各路大神讲解

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

为什么我的运行窗口出来后还是1900年1月,怎么变成当前年份和月份。

附上代码

①package zyb;

public class CalendarMainClass{

public static void main(String args[])

{

CalendarFrame frame = new CalendarFrame(); //创建一个基于CalendarFrame的主容器fram

frame.setBounds(100,100,360,300); //设置主容器的显示位置,以及界面的高和宽数据

frame.setTitle("日历");

frame.setVisible(true); //设置主容器为可见

frame.setYearAndMonth(1900,1);//设置日历初始值为1900年1月

}

}

package zyb;

import java.util.Calendar;

public class Calendarbean {

String day[];

int year = 1900,month=1;

public void setYear(int year){ //设置year的set和get方法

this.year=year;

}

public int getYear(){

return year;

}

public void setMonth(int month){ //设置month的set和get方法

this.month=month;

}

public int getMonth(){

return month;

}

public String[] getCalendar(){ //创建可以得到具体日期的字符串数组

String a[]=new String[42];

Calendar 日历=Calendar.getInstance();

日历.set(year,month-1,1); 设置指定时间

int 星期几=日历.get(Calendar.DAY_OF_WEEK)-1; //DAY_OF_WEEK是获取当前日期是一周中的第几天,星期日作为第一天

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=星期几,n=1;i

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

n++;

}

return a;

}

}

package zyb;

import java.awt.BorderLayout;

import java.awt.GridLayout;

import java.awt.Color;

import java.awt.event.ActionEvent; //事件处理机制,执行动作事件

import java.awt.event.ActionListener;

import java.text.SimpleDateFormat;//表示日期格式模板

import java.util.Date;

import javax.swing.JButton; //按钮组件

import javax.swing.JComboBox; //comBox 下拉列表组件|

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.border.BevelBorder;

import javax.swing.border.SoftBevelBorder;

public class CalendarFrame extends JFrame implements ActionListener{//CalendarFrame是你定义的主类名.JFrame是java封装的一个GUI类

JLabel labelDay[] = new JLabel[42]; //创建一个数组名为label,类型为JLabel,长度为42的数组

JButton titleName[] = new JButton[7]; //实例化这个表名按钮数组,其中包含7个元素

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

JComboBox choiceYear,choiceMonth;//下拉列表组件

Calendarbean calendar;//这个类用来分析输入年月等参数,来判断大小年以及是否闰年等问题

JLabel showYear,showMonth;//JLabel是一个标签,用来显示标签内容

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

int year = 2019,month=12;

//构造方法初始化界面

public CalendarFrame(){ // 为窗体修改自定义图标

JPanel pCenter = new JPanel();

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

pCenter.setBackground(Color.CYAN);

//向主容器中添加星期栏

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

titleName[i]=new JButton(name[i]); //titleName 显示标题栏名称的按钮|

pCenter.add(titleName[i]);

}

//向主容器添加每个小日期标签

for(int i=0;i<42;i++){ //labelDay[] 存放每一天的标签数组

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

pCenter.add(labelDay[i]);

}

//年月选择栏

choiceYear=new JComboBox(); //创建下拉列表,并添加下拉列表选项

choiceMonth=new JComboBox();

showYear=new JLabel("年");

showMonth=new JLabel("月 ");

for(int i=1900;i<2100;i++)

choiceYear.addItem(i);

choiceYear.addActionListener(this);

for(int i=1;i<=12;i++) //创建下拉列表,并添加下拉列表选项

choiceMonth.addItem(i);

choiceMonth.addActionListener(this);

calendar=new Calendarbean(); //声明calendar为calendarBean类的子类

JPanel pNorth=new JPanel(), // * 创建pNorth,pSouth面板

pSouth=new JPanel();

pNorth.add(choiceYear); // 向面板中添加各个组件

pNorth.add(showYear);

pNorth.add(choiceMonth);

pNorth.add(showMonth);

pSouth.add(showmessage);

add(pCenter,BorderLayout.CENTER); //将三个面板添加到以BorderLayout为布局的主Windows型容器中

add(pNorth,BorderLayout.NORTH); // 窗体加入pNorth 在北面区域

add(pSouth,BorderLayout.SOUTH); // 窗体加入pSouth 在南区域。

setYearAndMonth(year,month); //向setYearAndMonth方法传入year,month的值

setDefaultCloseOperation(DISPOSE_ON_CLOSE);//设置,当点击窗体右上角的关闭图标时,程序会做出直接结束程序的处理

}

//------编写传入年月的方法setYearAndMonth-----

public void setYearAndMonth(int y,int m){

calendar.setYear(y); //将setYearAndMonth方法得到的year,month的值传给calendar类

calendar.setMonth(m); //获取calendar类中getCalendar方法中的日期字符串数组,将获取的字符串数组的值传给每个labelDay小日期标签

String day[]=calendar.getCalendar();

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

labelDay[i].setText(day[i]);

//在showMessage标签中显示输出日期

SimpleDateFormat df = new SimpleDateFormat("yyyy年MM月dd日 EEEE");//设置日期格式

showmessage.setText("今日:"+df.format(new Date()));

}

//事件动作,-----重写actionPerformed方法------//

public void actionPerformed(ActionEvent e){

//选择年份

if (e.getSource()==choiceYear){

calendar.setYear((Integer) choiceYear.getSelectedItem());

String day[]=calendar.getCalendar();

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

labelDay[i].setText(day[i]);

}

}

//选择月份

if (e.getSource()==choiceMonth){

calendar.setMonth((Integer) choiceMonth.getSelectedItem());

String day[]=calendar.getCalendar();

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

labelDay[i].setText(day[i]);

}

}

// showmessage.setText("日历:"+calendar.getYear()+"年"+calendar.getMonth()+"月");

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值