该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
为什么我的运行窗口出来后还是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()+"月");
}
}