📄 calendarpad.java
字号:
import java.util.*;
import java.text.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.Hashtable;
import java.lang.*;
public class CalendarPad extends JFrame implements MouseListener
{
int year,month,jmonth,jyear;
String day,jday;
Hashtable hashtable;
Hashtable table=new Hashtable();
File file;
JTextField showDay[];
JLabel title[];
Calendar 日历;
int 星期几;
NotePad notepad;
Month 负责改变月;
Year 负责改变年;
JWindow jw=new JWindow();
JTextArea text=new JTextArea();
String 星期[]={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
JPanel leftPanel,rigthPanel;
public CalendarPad(int year,int month,String day)throws Exception
{
leftPanel=new JPanel();
JPanel leftCenter=new JPanel();
JPanel leftNorth=new JPanel();
leftCenter.setLayout(new GridLayout(7,7));
rigthPanel=new JPanel();
this.year=year;
this.month=month;
this.day=day;
this.jyear=year;
this.jmonth=month;
this.jday=day;
负责改变年=new Year(this);
负责改变年.setYear(year);
负责改变月=new Month(this);
负责改变月.setMonth(month);
title=new JLabel[7];
showDay=new JTextField[42];
for(int j=0;j<7;j++)
{
title[j]=new JLabel();
title[j].setText(星期[j]);
title[j].setBorder(BorderFactory.createRaisedBevelBorder());
leftCenter.add(title[j]);
}
title[0].setForeground(Color.red);
title[6].setForeground(Color.blue);
for(int i=0;i<42;i++)
{
showDay[i]=new JTextField();
showDay[i].addMouseListener(this);
showDay[i].setEditable(false);
leftCenter.add(showDay[i]);
}
日历=Calendar.getInstance();
Box box=Box.createHorizontalBox();
box.add(负责改变年);
box.add(负责改变月);
leftNorth.add(box);
leftPanel.setLayout(new BorderLayout());
leftPanel.add(leftNorth,BorderLayout.NORTH);
leftPanel.add(leftCenter,BorderLayout.CENTER);
leftPanel.add(new Label("请在年分输入框输入所查年份(负数表示公元前),并回车确定 "),BorderLayout.SOUTH);
leftPanel.validate();
Container con=getContentPane();
JSplitPane split=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,leftPanel,rigthPanel);
con.add(split,BorderLayout.CENTER);
con.validate();
setTitle("日历记事本");
addWindowListener(new WindowAdapter(){
public void windowCloseing(WindowEvent e){
System.exit(-1);
}
});
hashtable=new Hashtable();
file=new File("日历记事本.txt");
if(!file.exists()){
try{
FileOutputStream out=new FileOutputStream(file);
ObjectOutputStream objectout=new ObjectOutputStream(out);
objectout.writeObject(hashtable);
objectout.close();
out.close();
}catch(Exception e){}
}
put(file);
notepad=new NotePad(this);
rigthPanel.add(notepad);
设置日历牌(year,month);
setVisible(true);
setBounds(100,50,560,285);
validate();
}
public void 设置日历牌(int year,int month){
日历.set(year,month-1,1);
星期几=日历.get(Calendar.DAY_OF_WEEK)-1;
if(month==1||month==2||month==3||month==5||month==7||month==8||month==10||month==12)
{排列号码(星期几,31);}
else if(month==4||month==6||month==9||month==11)
{排列号码(星期几,30);}
else if(month==2){
if((year%4==0&&year%100!=0)||year%400==0)
{排列号码(星期几,29);}
else 排列号码(星期几,28);
}
}
public void put(File file){
try{
FileInputStream inone=new FileInputStream(file);
ObjectInputStream intwo=new ObjectInputStream(inone);
table=(Hashtable)intwo.readObject();
inone.close();
intwo.close();
}catch(Exception e){}
}
public boolean bool(int year,int month,String day){
String key=" "+year+" "+month+" "+day;
if(table.containsKey(key)){
return true;}
else return false;
}
public void 排列号码(int 星期几,int 月天数){
boolean b=true,c=true;
for(int i=星期几,n=1;i<星期几+月天数;i++){
showDay[i].setText(" "+n);
if(负责改变年.year==jyear&&负责改变月.month==jmonth&&Integer.toString(n).equals(jday)){
c=false;
showDay[i].setForeground(Color.green);
showDay[i].setFont(new Font("TimesRoman",Font.BOLD,20));
}
else if(负责改变年.year!=jyear||负责改变月.month!=jmonth||!Integer.toString(n).equals(jday))
{
showDay[i].setForeground(Color.black);
showDay[i].setFont(new Font("TimeRoman",Font.BOLD,12));
}
else{
showDay[i].setFont(new Font("TimesRoman",Font.BOLD,12));
showDay[i].setForeground(Color.black);
}
if(bool(负责改变年.year,负责改变月.month,Integer.toString(n)))
{
b=false;
showDay[i].setForeground(new Color(68,188,202));
if(c)
showDay[i].setFont(new Font("TimesRoman",Font.BOLD,12));
}
if(i%7==6&&b) showDay[i].setForeground(Color.blue);
if(i%7==0&&b) showDay[i].setForeground(Color.red);
n++;
b=true;
}
for(int i=0;i<星期几;i++){
showDay[i].setText(" ");
}
for(int i=星期几+月天数;i<42;i++)
showDay[i].setText(" ");
}
public int getYear(){return year;}
public void setYear(int y){
year=y;
notepad.setYear(year);}
public int getMonth(){return month;}
public void setMonth(int m){
month=m;
notepad.setMonth(month);}
public String getDay(){return day;}
public void setDay(String d){
day=d;
notepad.setDay(day);
}
public Hashtable getHashtable(){return hashtable;}
public File getFile(){return file;}
public void mousePressed(MouseEvent e){
JTextField source=(JTextField)e.getSource();
try{
String day=source.getText();
notepad.setDay(day);
notepad.设置信息条(year,month,day);
notepad.设置文本区(null);
notepad.获取日志内容(year,month,day);
}catch(Exception ee){}
}
public void mouseClicked(MouseEvent e1){}
public void mouseReleased(MouseEvent e2){}
public void mouseEntered(MouseEvent e3){
try{
JTextField source=(JTextField)e3.getSource();
day=source.getText();
int xx=source.getX();
int yy=source.getY();
String s3=负责改变年.year+"-"+负责改变月.month+"-"+day;
Calendar cld=Calendar.getInstance();
SimpleDateFormat bar =new SimpleDateFormat("yyyy-MM-dd");
Date date = bar.parse(s3);
cld.setTime(date);
LunarCal lunar = new LunarCal(cld);
Container con=jw.getContentPane();
jw.setBounds(getX()+xx,getY()+yy+100,100,40);
con.add("Center",text);
text.setEditable(false);
text.setText("农历 "+lunar.getLunar()+"\n"+lunar.cyclicaly()+"年"+" "+lunar.cyclicalm()+"月");
jw.show();
}catch(Exception ee){}
}
public void mouseExited(MouseEvent e4){
jw.hide();
}
public static void main(String[] args)throws Exception
{
Calendar calendar=Calendar.getInstance();
int y=calendar.get(Calendar.YEAR);
int m=calendar.get(Calendar.MONTH)+1;
String d=Integer.toString(calendar.get(Calendar.DAY_OF_MONTH));
new CalendarPad(y,m,d);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -