📄 untitled1.java
字号:
package com.zk1;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
public class Untitled1 extends JFrame
{
GregorianCalendar today=new GregorianCalendar();
JPanel p1=new JPanel();
JPanel p2=new JPanel(new BorderLayout());
JPanel p3=new JPanel(new GridLayout(1,7));
JPanel p4=new JPanel();
int[] days={31,28,31,30,31,30,31,31,30,31,30,31};
int[] ldays={31,29,31,30,31,30,31,31,30,31,30,31};
JLabel yearLabel=new JLabel("请输入年份");
JLabel monthLabel=new JLabel("请输入月份");
JLabel dateLabel=new JLabel("请输入日期");
JComboBox yearList=null;
JComboBox monthList=null;
JComboBox dateList=null;
JLabel [] weekdayLabel=new JLabel[7];
Font f=new Font("宋体",Font.BOLD,42);
private boolean isLeapYear(int year)
{
return year%4==0&&year%100!=0||year%400==0;
}
public Untitled1(String title)
{
super(title);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setResizable(false);
this.getContentPane().add(p1,BorderLayout.NORTH);
this.getContentPane().add(p2);
//p2.setBackground(Color.BLACK);
initComponents();
}
private void initComponents()
{
String[] years=new String[41];
for(int i=0;i<years.length;i++)
years[i]=String.valueOf(today.get(Calendar.YEAR)-20+i);
yearList=new JComboBox(years);
yearList.setSelectedIndex(20);
String[] months={"1","2","3","4","5","6","7","8","9","10","11","12"};
monthList=new JComboBox(months);
monthList.setSelectedIndex(today.get(Calendar.MONTH));
String[] dates=null;
if(isLeapYear(today.get(Calendar.YEAR)))
dates=new String[ldays[today.get(Calendar.MONTH)]];
else
dates=new String[days[today.get(Calendar.MONTH)]];
for(int i=0;i<dates.length;i++)
dates[i]=String.valueOf(i+1);
dateList=new JComboBox(dates);
dateList.setSelectedIndex(today.get(Calendar.DAY_OF_MONTH)-1);
p1.add(yearLabel);
p1.add(new JScrollPane(yearList));
p1.add(monthLabel);
p1.add(new JScrollPane(monthList));
p1.add(dateLabel);
p1.add(new JScrollPane(dateList));
weekdayLabel[0]=new JLabel("SUN",SwingConstants.CENTER);
weekdayLabel[0].setForeground(Color.RED);
weekdayLabel[1]=new JLabel("MON",SwingConstants.CENTER);
weekdayLabel[2]=new JLabel("TUE",SwingConstants.CENTER);
weekdayLabel[3]=new JLabel("WED",SwingConstants.CENTER);
weekdayLabel[4]=new JLabel("THU",SwingConstants.CENTER);
weekdayLabel[5]=new JLabel("FRI",SwingConstants.CENTER);
weekdayLabel[6]=new JLabel("SAT",SwingConstants.CENTER);
weekdayLabel[6].setForeground(Color.RED);
p2.add(p3,BorderLayout.NORTH);
p2.add(p4);
for(int i=0;i<weekdayLabel.length;i++)
p3.add(weekdayLabel[i]);
addDateLabel();
initComboBoxListener();
}
private void initComboBoxListener()
{
dateList.addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent e)
{
addDateLabel();
}
});
monthList.addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent e)
{
updateDateList();
addDateLabel();
}
});
yearList.addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent e)
{
updateDateList();
addDateLabel();
}
});
}
private void updateDateList()
{
dateList.removeAllItems();
String[] dates=null;
if(isLeapYear(Integer.parseInt(String.valueOf(yearList.getSelectedItem()))))
dates=new String[ldays[monthList.getSelectedIndex()]];
else
dates=new String[days[monthList.getSelectedIndex()]];
for(int i=0;i<dates.length;i++)
{
dates[i] = String.valueOf(i + 1);
dateList.addItem(dates[i]);
}
dateList.validate();
}
private void addDateLabel()
{
p4.removeAll();
int year=Integer.parseInt(String.valueOf(yearList.getSelectedItem()));
int month=monthList.getSelectedIndex();
int date=dateList.getSelectedIndex()+1;
GregorianCalendar today=new GregorianCalendar(year,month,date);
GregorianCalendar firstDay=new GregorianCalendar(year,month,1);
int first=firstDay.get(Calendar.DAY_OF_WEEK);
int rows=(first-1+dateList.getItemCount()+6)/7;
p4.setLayout(new GridLayout(rows,7));
JLabel[] dateLabels=new JLabel[rows*7];
for(int i=0;i<dateLabels.length;i++)
{
if(i<first-1)
dateLabels[i]=new JLabel();
else if(i<=dateList.getItemCount()+first-2)
dateLabels[i]=new JLabel(String.valueOf(i-first+2),SwingConstants.CENTER);
else
dateLabels[i]=new JLabel();
dateLabels[i].setFont(f);
if((i+1)%7==0||i%7==0)
dateLabels[i].setForeground(Color.RED);
p4.add(dateLabels[i]);
}
if(dateLabels.length!=0)
dateLabels[dateList.getSelectedIndex()+first-1].setForeground(Color.BLUE);
p4.validate();
}
public static void main(String[] args)
{
JFrame.setDefaultLookAndFeelDecorated(true);
Untitled1 frame=new Untitled1("日历");
frame.setSize(600,400);
frame.setVisible(true);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -