⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 note.java

📁 一个可以同时实现万年历和记事本的源文件,日历记事本
💻 JAVA
字号:
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
import java.util.*; 
import java.text.*; 
import java.io.*; 
public class Note extends Frame { 

private MenuBar mb; 
private Menu mset_param ,mhelp; 
private MenuItem mibc ,miSound; 
private MenuItem miabout; 
//缺省的背景颜色 
private static Color backgroundcolor = Color.GRAY; 

//funtction of the button on plcb is chose year andmonth 
//and set alarm colock and remind booking 
private JCheckBox remindBook ,alarmColock; 
private JComboBox cbyears ,cbmonths; 
private JPanel plcb; 
//日历按钮 
private JPanel plbt; 
private JButton button[]; 
//add vector to contain button[],so that find it 
private Vector v; 
//save the year and month 
private String choseyear ,chosemonth; 
private int choseyearint ,chosemonthint; 
private boolean changed = false; 
private boolean fileExist = false;//the application first run to find file 
private static boolean needSound; 

//add text to write down what to do in the future 
private TextArea tanote; 
private JPanel plta; 

//默认的年份 
private final static String years[]={ 
"1995" ,"1996" ,"1997" ,"1998" ,"1999" ,"2000" , 
"2001" ,"2002" ,"2003" ,"2004" ,"2005" ,"2006" , 
"2007" ,"2008" ,"2009" ,"2010" ,"2011" ,"2012" , 
"2013" ,"2014" ,"2015" ,"2016" ,"2017" ,"2018" , 
"2019" ,"2020" 
}; 

private static final String months[] = { 
"January" ,"February" ,"March" ,"April" ,"May" ,"June" ,"July" ,"August" , 
"September" ,"October" ,"November" ,"December" 
}; 

private final static int dom[] = { 
31 ,28 ,31 ,30 ,31 ,30 ,31 ,31 ,30 ,31 ,30 ,31 
}; 

//save the first day of the month to use 
private int start; 
//save the button who is entered 
private int btnIndex; 

public Note() { 
mb = new MenuBar(); 
mset_param = new Menu("设置"); 
mhelp = new Menu("帮助"); 
mibc = new MenuItem("背景"); 
miSound = new MenuItem("声音"); 
miabout = new MenuItem("关于..."); 

mset_param.add(mibc); 
mset_param.addSeparator(); 
mset_param.add(miSound); 
mhelp.add(miabout); 
setMenuBar(mb); 
mb.add(mset_param); 
mb.setHelpMenu(mhelp); 

MListener ml = new MListener(); 
mibc.addActionListener(ml); 
miabout.addActionListener(ml); 
miSound.addActionListener(ml); 

cbyears = new JComboBox(); 
cbmonths = new JComboBox(); 
plcb = new JPanel(); 
plcb.setLayout(new FlowLayout()); 
JLabel lyears = new JLabel("年份:"); 
JLabel lmonths = new JLabel("月份:"); 
plcb.add(lyears); 
plcb.add(cbyears); 
plcb.add(lmonths); 
plcb.add(cbmonths); 
remindBook = new JCheckBox("预约提示",true); 
alarmColock = new JCheckBox("闹钟"); 
// Dimension d = new Dimension(); 
// remindBook.setSize(d); 
// remindBook.getSize(d); 
// System.out.println("W:"+d.getWidth()+" H:"+d.getHeight()); 
plcb.add(remindBook); 
plcb.add(alarmColock); 
remindBook.addActionListener(new RemindListener()); 
alarmColock.addActionListener(new RemindListener()); 
add(plcb ,BorderLayout.NORTH); 

//add calendar 
getCalendar(); 

plbt = new JPanel(); 
plbt.setBackground(Color.BLUE); 
plbt.setLayout(new GridLayout(7 ,7)); 

plbt.add(new JLabel(" 星期日")); 
plbt.add(new JLabel(" 星期一")); 
plbt.add(new JLabel(" 星期二")); 
plbt.add(new JLabel(" 星期三")); 
plbt.add(new JLabel(" 星期四")); 
plbt.add(new JLabel(" 星期五")); 
plbt.add(new JLabel(" 星期六")); 

//add calendar button to frame 
//add button to vector; 
v = new Vector(); 
button = new JButton[42]; 
for(int i=0;i<41;i++){ 
button[i] = new JButton(); 
plbt.add(button[i]); 
button[i].addActionListener(new ButtonListener()); 
v.add(button[i]); 
} 

button[41] = new JButton(); 
plbt.add(button[41]); 
button[41].setText("保存"); 
button[41].addActionListener(new SaveListener()); 
add(plbt ,BorderLayout.CENTER); 

//add note book 
// plta = new JPanel(); 
tanote = new TextArea(5 ,80); 
// tanote.addTextListener(new tanoteTextListener()); 
// tanote.setColumns(80); 
// plta.add(tanote); 
// tanote.SCROLLBARS_VERTICAL_ONLY; 
add(tanote ,BorderLayout.SOUTH); 

/* 
//add date to button 
GregorianCalendar calendar = new GregorianCalendar(choseyearint ,chosemonthint ,1); 
int start = calendar.get(Calendar.DAY_OF_WEEK)-1; 
int daysInMonth = dom[chosemonthint]; 
if(calendar.isLeapYear(choseyearint)&&chosemonthint == 1){ 
++daysInMonth; 
} 
for(int i =0;i<daysInMonth;i++){ 
button[start+i].setText(" "+(i+1)+" "); 
} 
*/ 
//add the default year and month to JComboBox 
for(int i= 0;i<=25;i++){ 
cbyears.addItem(years[i]); 
} 
for(int i=0;i<12;i++){ 
cbmonths.addItem(months[i]); 
} 
/* 
//add current year and month 
cbyears.setSelectedIndex(choseyearint-1995); 
cbmonths.setSelectedIndex(chosemonthint); 
*/ 

//show date to calendar 
showDate(); 
//open file add to note 
Calendar now = new GregorianCalendar(); 
int num = start + now.get(Calendar.DAY_OF_MONTH)-1; 
btnIndex = num; 
readFile(num); 
fileSound(); 

//add threadcb to listen jcombobox state 
new ThreadCB().start(); 

//listen the JComboBox of years and months 
cbyears.addItemListener(new cbyearsItemListener()); 
cbmonths.addItemListener(new cbmonthsItemListener()); 

addWindowListener(new WindowAdapter() { 
public void windowClosing(WindowEvent e) { 
dispose(); 
System.exit(0); 
} 
}); 
} 

/** 
*add menu listener to know the menu what do want to do 
*/ 
class MListener implements ActionListener{ 
public void actionPerformed(ActionEvent e){ 
MenuItem i = (MenuItem)e.getSource(); 
if(i.equals(miabout)){ 
JOptionPane.showMessageDialog(null ,"日历记事本程序V1.0","关于..." ,JOptionPane.INFORMATION_MESSAGE); 
} 
else if(i.equals(mibc)){ 
//backgroundcolor = Color.BLACK; 
backgroundcolor = JColorChooser.showDialog(null ,"选择颜色..." ,getBackground()); 
setBackground(backgroundcolor); 
plbt.setBackground(backgroundcolor); 
// System.out.println(choseyear); 
//// 
} 
else{ 
JOptionPane.showMessageDialog(null ,"I am sorry ,this function is not complation" ,"Sorry" ,JOptionPane.INFORMATION_MESSAGE); 
} 
} 
} 

/** 
*add the year JComboBox listener to know what active 
*/ 
class cbyearsItemListener implements ItemListener{ 
public void itemStateChanged(ItemEvent e){ 
// System.out.println(e.paramString()); 
// System.out.println(e.getStateChange()); 
// System.out.println(e.getItem().toString()); 
// if(e.getSource().equals("1997")){ 
// System.out.println("1997 is chosed"); 
// } 
// else{ 
// System.out.println("the System is not chose 1997"); 
// } 
// choseyear = e.getItem().toString(); 
changed = true; 
// showDate(); 
// cbmonths.setSelectedIndex(5); 
} 
} 

/** 
*add the month JComboBox listener to know what active 
*/ 
class cbmonthsItemListener implements ItemListener{ 
public void itemStateChanged(ItemEvent e){ 
// System.out.println(choseyear); 
// chosemonth = e.getItem().toString(); 
changed = true; 

// chosemonthint = Integer.parseInt(chosemonth); 
// System.out.println(chosemonthint); 
// showDate(); 
} 
} 

public static void main(String args[]) { 
System.out.println("Starting Note..."); 
Note mainFrame = new Note(); 
mainFrame.setSize(600, 400); 
mainFrame.setTitle("日历记事本"); 
mainFrame.setBackground(backgroundcolor); 
mainFrame.setVisible(true); 
for(int i=0;i<10;i++){ 
System.out.print("\007"); 
} 
// Thread dd = new ThreadCB(); 
// dd.start(); 
// mainFrame.paintCalendar(); 
} 

protected void getCalendar(){ 
Calendar now = new GregorianCalendar(); 
// System.out.println("year :"+now.get(Calendar.YEAR)); 
// System.out.println("month:"+now.get(Calendar.MONTH)); 
// int y = now.get(Calendar.YEAR); 
// choseyear = Integer.toString(y); 
// int m = now.get(Calendar.MONTH); 
// chosemonth = Integer.toString(m+1); 
choseyearint = now.get(Calendar.YEAR); 
chosemonthint = now.get(Calendar.MONTH); 
// System.out.println("y "+choseyear+"::"+chosemonth); 
} 

/** 
*show date to calendar 
*/ 
protected void showDate(){ 
GregorianCalendar calendar = new GregorianCalendar(choseyearint ,chosemonthint ,1); 
start = calendar.get(Calendar.DAY_OF_WEEK)-1; 
int daysInMonth = dom[chosemonthint]; 
if(calendar.isLeapYear(choseyearint)&&chosemonthint == 1){ 
++daysInMonth; 
} 
for(int i =0;i<daysInMonth;i++){ 
button[start+i].setForeground(Color.BLACK); 
button[start+i].setText(" "+(i+1)+" "); 
} 
//set current day 
int nowDay = start + calendar.get(Calendar.DAY_OF_MONTH); 
button[nowDay+1].setForeground(Color.RED); 
//add current year and month 
cbyears.setSelectedIndex(choseyearint-1995); 
cbmonths.setSelectedIndex(chosemonthint); 
} 

//listen the buttons active 
class ButtonListener implements ActionListener{ 
public void actionPerformed(ActionEvent e){ 
Object obj = e.getSource(); 
// System.out.println("haha"+e.getSource()); 
btnIndex = v.indexOf(obj); 
readFile(btnIndex); 
/* switch(v.indexOf(obj)){ 
case 1: 
System.out.println("i am button1"); 
break; 
case 2: 
// System.out.println("I am button2"); 
readFile(2); 
break; 
case 41: 
System.out.println(tanote.getText()); 
break; 
default: 
System.out.println("I do not know who am I"); 
break; 
} 
*/ } 
} 

/** 
*create a thread to listen the year or month′s state 
*/ 
class ThreadCB extends Thread{ 
public void run(){ 
while(true){ 
if(changed){ 
changed = false; 
choseyearint = cbyears.getSelectedIndex()+1995; 
chosemonthint = cbmonths.getSelectedIndex(); 
//System.out.println("y:"+choseyearint+":M:"+chosemonthint); 
for(int i=0;i<40;i++){ 
button[i].setText(""); 
} 
showDate(); 
} 
try{ 
sleep(200); 
} 
catch(InterruptedException e){ 
System.err.println(e); 
} 
} 
} 
} 

/** 
* add note book listener to know the textarea active 
*/ 
/* 
class tanoteTextListener implements TextListener{ 
public void textValueChanged(TextEvent e){ 
//System.out.println(e.getSource()); 
} 
}*/ 

/** 
*check file to know the file is exist 
* if exist,read it to the note book 
*/ 
protected void readFile(int bt){ 
int y = cbyears.getSelectedIndex()+1995;//real year 
int m = cbmonths.getSelectedIndex()+1;//real month 
String fileName = Integer.toString(y) + Integer.toString(m)+"button"+Integer.toString(bt); 
// System.out.println("I am dudu"); 
// System.out.println(fileName); 
// String fileName = "testDay.java"; 

File file = new File(fileName); 
BufferedReader is; 
String line; 
StringBuffer sb = new StringBuffer(); 

tanote.setText(""); 
if(file.exists()){ 
try{ 
is = new BufferedReader(new FileReader(fileName)); 

while((line = is.readLine())!= null){ 
sb.append(line); 
sb.append("\n"); 
} 
is.close(); 
} 
catch(IOException e){ 
System.err.println(e); 
System.exit(0); 
} 
tanote.setText(sb.toString()); 
fileExist = true; 
} 
else{ 
System.out.println(fileName+" is not exists"); 
} 

} 

/** 
*sound 
*/ 
protected void fileSound(){ 
if(remindBook.isSelected()){ 
if(fileExist){ 
/* for(int i=0;i<10;i++){ 
System.out.println("\007"); 
} 
*/ 
needSound = true; 
} 
} 
} 

/** 
*listen the save button active 
*/ 
class SaveListener implements ActionListener{ 
public void actionPerformed(ActionEvent e){ 
int bt = btnIndex; 
int y = cbyears.getSelectedIndex()+1995;//real year 
int m = cbmonths.getSelectedIndex()+1;//real month 
String fileName = Integer.toString(y) + Integer.toString(m)+"button"+Integer.toString(bt); 

try{ 
BufferedWriter bw = new BufferedWriter(new FileWriter(fileName)); 
//int row = tanote.getRows(); 
//System.out.println("rows:"+row); 
String s = tanote.getText(); 
System.out.println("length:"+s.length()); 
bw.write(s); 

bw.close(); 
} 
catch(IOException ev){ 
System.err.println(ev); 
System.exit(0); 
} 
} 
} 

// 
class RemindListener implements ActionListener{ 
public void actionPerformed(ActionEvent ae){ 
Object obj = ae.getSource(); 
if(obj.equals(remindBook)){ 
if(remindBook.isSelected()){ 
System.out.println("I am selected"); 
} 
else{ 
System.out.println("I am not selected"); 
} 
} 
else{ 
if(alarmColock.isSelected()){ 
// System.out.println("I am selected"); 
final JFrame jf = new JFrame("设置时间"); 
jf.setSize(300,100); 
jf.setLocation(200 ,200); 
jf.setVisible(true); 
// Font f = new Font( ,Font.BOLD ,20); 
JLabel jl = new JLabel("逗你玩"); 
String name=jl.getFont().getName(); 
// System.out.println("Font:"+name);//name′s value is Dialog 
Font f = new Font(name ,Font.BOLD+Font.ITALIC ,20); 
jl.setForeground(Color.red); 
jl.setFont(f); 
jf.getContentPane().setLayout(new GridLayout(5 ,2)); 
jf.getContentPane().add(new JLabel(" ")); 
jf.getContentPane().add(jl); 
jf.getContentPane().add(new JLabel("sorry! this function is not do!!")); 
jf.pack(); 
jf.addWindowListener(new WindowAdapter(){ 
public void windowClosing(WindowEvent we){ 
jf.dispose(); 
} 
}); 
} 
else{ 
System.out.println("I am not selected"); 
} 
} 
} 
} 
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -