62,566
社区成员




import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class NoteBook extends JFrame {
private int year = 0;
private int month = 0;
private int day = 0;
private int startDays = 0;
private JButton jbtAdd = new JButton("添加");
private JButton jbtSee = new JButton("查看");
private JButton jbtDel = new JButton("删除");
private JButton jbtPre = new JButton("Pre");
private JButton jbtNext = new JButton("Next");
private JTextField jtfYear = new JTextField(10);
private JTextField jtfMonth = new JTextField(10);
private JTextField jtfDay = new JTextField(10);
private JLabel jlbYear = new JLabel("年");
private JLabel jlbMonth = new JLabel("月");
private JLabel jlbDay = new JLabel("日");
private JLabel jlbNull = new JLabel(); // 设置一个空的标签
private JLabel jlb1 = new JLabel("星期一");
private JLabel jlb2 = new JLabel("星期二");
private JLabel jlb3 = new JLabel("星期三");
private JLabel jlb4 = new JLabel("星期四");
private JLabel jlb5 = new JLabel("星期五");
private JLabel jlb6 = new JLabel("星期六");
private JLabel jlb0 = new JLabel("星期天");
private JLabel[] jlb = new JLabel[42]; // 定义一个标签数组用来存放日期
JPanel p1 = new JPanel();
JPanel p2 = new JPanel();
JPanel p3 = new JPanel();
JPanel p4 = new JPanel();
JPanel p5 = new JPanel();
public NoteBook() {
jtfYear.setHorizontalAlignment(JTextField.RIGHT); // 设置JTextField的显示方式
jtfMonth.setHorizontalAlignment(JTextField.RIGHT);
jtfDay.setHorizontalAlignment(JTextField.RIGHT);
setLayout(new BorderLayout());
p4.setLayout(new BorderLayout());
p1.add(jbtAdd);
p1.add(jbtSee);
p1.add(jbtDel);
add(p1, BorderLayout.NORTH);
p2.add(jtfYear);
p2.add(jlbYear);
p2.add(jtfMonth);
p2.add(jlbMonth);
p2.add(jtfDay);
p2.add(jlbDay);
p4.add(p2, BorderLayout.NORTH);
p3.setLayout(new GridLayout(7, 7, 2, 2));
p3.add(jlb0);
p3.add(jlb1);
p3.add(jlb2);
p3.add(jlb3);
p3.add(jlb4);
p3.add(jlb5);
p3.add(jlb6);
getDate(); // 获得年月日
jtfYear.setText("" + year); // 设置年
jtfMonth.setText("" + month); // 设置月
jtfDay.setText("" + day); // 设置日
// year=Integer.parseInt(jtfYear.getText().trim());
// month=Integer.parseInt(jtfMonth.getText().trim());
showCalendar();
p4.add(p3, BorderLayout.CENTER);
p5.add(jbtPre);
p5.add(jlbNull);
p5.add(jbtNext);
p4.add(p5, BorderLayout.SOUTH);
add(p4, BorderLayout.CENTER);
setTitle("NoteBook");
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
// setSize(500,600);
setVisible(true);
jbtPre.addActionListener(new ActionListener() { // 注册按钮 Pre
public void actionPerformed(ActionEvent e) {
if (month == 1) {
year--;
month = 12;
} else {
month--;
}
showCalendar();
}
});
jbtNext.addActionListener(new ActionListener() { // 注册按钮 Next
public void actionPerformed(ActionEvent e) {
if (month == 12) {
year++;
month = 1;
} else {
month++;
}
showCalendar();
}
});
}
public void showCalendar() { // 显示日历
startDays = getStartDay(getDays(year, month));
p3.removeAll();
for (int i = 0, j = 1; i < 42; i++) {
if (i >= startDays && (j <= getMonthDay(year, month))) {
p3.add(jlb[i] = new JLabel("" + j));
// System.out.println("j is "+j);
j++;
} else
p3.add(jlb[i] = new JLabel());
// System.out.println("i is "+i);
}
p3.validate();
}
public void getDate() { // 获得当前日期
java.util.Date current = new java.util.Date();
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(
"yyyy-MM-dd");
String c = sdf.format(current);
// System.out.println(c);
// Calendar calendar = Calendar.getInstance();
// Date date = calendar.getTime();
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd HH:mm:ss");
String[] tokens = c.split("-");
// for(String a : tokens){
// System.out.println(a);
// }
for (int i = 0, temp = 0; i < tokens.length; i++) {
temp = Integer.parseInt(tokens[i]);
System.out.println(temp);
}
year = Integer.parseInt(tokens[0]); // 获得当月的年月日
month = Integer.parseInt(tokens[1]);
day = Integer.parseInt(tokens[2]);
}
public boolean isLeapYear(int y) { // 判断闰年
boolean isLY = false;
if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0))
isLY = true;
return isLY;
}
public int getDays(int year, int month) { // 获得总共的天数
int totalDays = 0;
for (int i = 1800; i < year; i++) {
if (isLeapYear(i))
totalDays += 366;
else
totalDays += 365;
}
totalDays += getMonthDays(year, month);
// System.out.println("总天数为"+totalDays);
return totalDays;
}
public int getMonthDays(int year, int month) { // 获得当年月份的总天数
int monthDays = 0;
for (int i = 1; i < month; i++) {
switch (i) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
monthDays += 31;
break;
case 4:
case 6:
case 9:
case 11:
monthDays += 30;
break;
case 2:
if (isLeapYear(year))
monthDays += 29;
else
monthDays += 28;
break;
default:
break;
}
}
// System.out.println("月份的总天数"+monthDays);
return monthDays;
}
public int getStartDay(int allDays) { // 获得开始的日子
int start = 0;
int start1800 = 3;
start = (allDays + start1800) % 7;
return start;
}
public int getMonthDay(int year, int month) { // 获得当月的天数
int monthDay = 0;
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
monthDay = 31;
break;
case 4:
case 6:
case 9:
case 11:
monthDay = 30;
break;
case 2:
if (isLeapYear(year))
monthDay = 29;
else
monthDay = 28;
break;
default:
monthDay += 0;
}
return monthDay;
}
public void paintComponent(Graphics g) {
// super.paintComponent(g);
showCalendar();
}
public static void main(String args[]) {
new NoteBook();
// System.exit(0);
}
}