Java日历记事本课程设计报告

合集下载

Java日历记事本课程设计报告毕业用资料

Java日历记事本课程设计报告毕业用资料

Java日历记事本课程设计报告在设计日历记事本时,需要编写6个JAVA源文件:CalendarWindow.java、CalendarPad.java、NotePad.java、CalendarImage.java、Clock.java和CalendarMesssage.java效果图如下.CalendarWindow类import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.util.*;import java.io.*;public class CalendarWindow extends JFrame implements ActionListener,MouseListener,FocusListener{int year,month,day;CalendarMessage calendarMessage;CalendarPad calendarPad;NotePad notePad;JTextField showYear,showMonth;JTextField[]showDay;CalendarImage calendarImage;String picturename;Clock clock;JButton nextYear,previousYear,nextMonth,previousMonth;JButtonsaveDailyRecord,deleteDailyRecord,readDailyRecord;JButton getPicture;File dir;Color backColor=Color.white;public CalendarWindow(){dir=new File("./dailyRecord");dir.mkdir();showDay=new JTextField[42];for(int i=0;i<showDay.length;i++){showDay[i]=new JTextField();showDay[i].setBackground(backColor);showDay[i].setLayout(new GridLayout(3,3));showDay[i].addMouseListener(this);showDay[i].addFocusListener(this);}calendarMessage=new CalendarMessage();calendarPad=new CalendarPad();notePad=new NotePad();Calendar calendar=Calendar.getInstance();calendar.setTime(new Date());year=calendar.get(Calendar.YEAR);month=calendar.get(Calendar.MONTH)+1;day=calendar.get(Calendar.DAY_OF_MONTH);calendarMessage.setYear(year);calendarMessage.setMonth(month);calendarMessage.setDay(day);calendarPad.setCalendarMessage(calendarMessage);calendarPad.setShowDayTextField(showDay);notePad.setShowMessage(year,month,day);calendarPad.showMonthCalendar();doMark();calendarImage=new CalendarImage();calendarImage.setImageFile(new File("flower.jpg"));clock=new Clock();JSplitPane splitV1=new JSplitPane(JSplitPane.VERTICAL_SPLIT,calendarPad,calendarIm age);JSplitPane splitV2=new JSplitPane(JSplitPane.VERTICAL_SPLIT,notePad,clock);JSplitPane splitH=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,splitV1,splitV2);add(splitH,BorderLayout.CENTER);showYear=new JTextField(""+year,6);showYear.setFont(newFont("TimesRoman",Font.BOLD,12));showYear.setHorizontalAlignment(JTextField.CENTER);showMonth=new JTextField(""+month,4);。

JAVA日历记事本课程设计报告

JAVA日历记事本课程设计报告

Java日历记事本课程设计报告在设计日历记事本时,需要编写6个JA V A源文件:CalendarWindow.java、CalendarPad.java、NotePad.java、CalendarImage.java、Clock.java和CalendarMesssage.java效果图如下. CalendarWindow类import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.util.*;import java.io.*;public class CalendarWindow extends JFrame implements ActionListener,MouseListener,FocusListener{int year,month,day;CalendarMessage calendarMessage;CalendarPad calendarPad;NotePad notePad;JTextField showYear,showMonth;JTextField[] showDay;CalendarImage calendarImage;String picturename;Clock clock;JButton nextYear,previousYear,nextMonth,previousMonth;JButton saveDailyRecord,deleteDailyRecord,readDailyRecord;JButton getPicture;File dir;Color backColor=Color.white ;public CalendarWindow(){dir=new File("./dailyRecord");dir.mkdir();showDay=new JTextField[42];for(int i=0;i<showDay.length;i++){showDay[i]=new JTextField();showDay[i].setBackground(backColor);showDay[i].setLayout(new GridLayout(3,3));showDay[i].addMouseListener(this);showDay[i].addFocusListener(this);}calendarMessage=new CalendarMessage();calendarPad=new CalendarPad();notePad=new NotePad();Calendar calendar=Calendar.getInstance();calendar.setTime(new Date());year=calendar.get(Calendar.YEAR);month=calendar.get(Calendar.MONTH)+1;day=calendar.get(Calendar.DAY_OF_MONTH);calendarMessage.setYear(year);calendarMessage.setMonth(month);calendarMessage.setDay(day);calendarPad.setCalendarMessage(calendarMessage);calendarPad.setShowDayTextField(showDay);notePad.setShowMessage(year,month,day);calendarPad.showMonthCalendar();doMark();calendarImage=new CalendarImage();calendarImage.setImageFile(new File("flower.jpg"));clock=new Clock();JSplitPane splitV1=new JSplitPane(JSplitPane.VERTICAL_SPLIT,calendarPad,calendarImage);JSplitPane splitV2=new JSplitPane(JSplitPane.VERTICAL_SPLIT,notePad,clock);JSplitPane splitH=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,splitV1,splitV2);add(splitH,BorderLayout.CENTER);showYear=new JTextField(""+year,6);showYear.setFont(new Font("TimesRoman",Font.BOLD,12));showYear.setHorizontalAlignment(JTextField.CENTER);showMonth=new JTextField(""+month,4);showMonth.setFont(new Font("TimesRoman",Font.BOLD,12)); showMonth.setHorizontalAlignment(JTextField.CENTER); nextYear=new JButton("下年");previousYear=new JButton("上年");nextMonth=new JButton("下月");previousMonth=new JButton("上月");nextYear.addActionListener(this);previousYear.addActionListener(this);nextMonth.addActionListener(this);previousMonth.addActionListener(this);JPanel north=new JPanel();north.add(previousYear);north.add(showYear);north.add(nextYear);north.add(previousMonth);north.add(showMonth);north.add(nextMonth);add(north,BorderLayout.NORTH);saveDailyRecord=new JButton("保存日志"); deleteDailyRecord=new JButton("删除日志"); readDailyRecord=new JButton("读取日志"); saveDailyRecord.addActionListener(this); deleteDailyRecord.addActionListener(this); readDailyRecord.addActionListener(this);JPanel pSouth=new JPanel();pSouth.add(saveDailyRecord);pSouth.add(deleteDailyRecord);pSouth.add(readDailyRecord);add(pSouth,BorderLayout.SOUTH);getPicture=new JButton("选择日历图像");getPicture.addActionListener(this);pSouth.add(getPicture);add(pSouth,BorderLayout.SOUTH);setVisible(true);setBounds(60,60,660,480);validate();setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}public void actionPerformed(ActionEvent e){if(e.getSource()==nextYear){year++;showYear.setText(""+year);calendarMessage.setYear(year);calendarPad.setCalendarMessage(calendarMessage);calendarPad.showMonthCalendar();notePad.setShowMessage(year,month,day);doMark();}else if(e.getSource()==previousYear){year--;showYear.setText(""+year);calendarMessage.setYear(year);calendarPad.setCalendarMessage(calendarMessage);calendarPad.showMonthCalendar();notePad.setShowMessage(year,month,day);doMark();}else if(e.getSource()==nextMonth){month++;if(month<1) month=12;showMonth.setText(""+month);calendarMessage.setMonth(month);calendarPad.setCalendarMessage(calendarMessage);calendarPad.showMonthCalendar();notePad.setShowMessage(year,month,day);doMark();}else if(e.getSource()==previousMonth){month--;if(month<1) month=12;showMonth.setText(""+month);calendarMessage.setMonth(month);calendarPad.setCalendarMessage(calendarMessage);calendarPad.showMonthCalendar();notePad.setShowMessage(year,month,day);doMark();}else if(e.getSource()==showYear){String s=showYear.getText().trim();char a[]=s.toCharArray();boolean boo=false;for(int i=0;i<a.length;i++)if(!(Character.isDigit(a[i])))boo=true;if(boo==true)JOptionPane.showMessageDialog(this, "您输入了非法年份","警告",JOptionPane.WARNING_MESSAGE);else if(boo==false)year=Integer.parseInt(s);showYear.setText(""+year);calendarMessage.setYear(year);calendarPad.setCalendarMessage(calendarMessage);calendarPad.showMonthCalendar();notePad.setShowMessage(year,month,day);doMark();}else if(e.getSource()==saveDailyRecord){notePad.save(dir,year,month,day);doMark();}else if(e.getSource()==deleteDailyRecord){notePad.delete(dir,year,month,day);doMark();}else if(e.getSource()==readDailyRecord){notePad.read(dir,year,month,day);}else if (e.getSource() ==getPicture ) {FileDialog fd=new FileDialog(this,"打开文件对话框");fd.setVisible(true);String fileopen = null, filename = null;fileopen = fd.getDirectory();filename = fd.getFile();calendarImage.setImageFile(new File(fileopen,filename));}}public void mousePressed(MouseEvent e){JTextField text=(JTextField)e.getSource();String str=text.getText().trim();try{ day=Integer.parseInt(str);}catch(NumberFormatException exp){}calendarMessage.setDay(day);notePad.setShowMessage(year,month,day);}public void mouseReleased(MouseEvent e){}public void mouseEntered(MouseEvent e){}public void mouseExited(MouseEvent e){}public void mouseClicked(MouseEvent e){}public void focusGained(FocusEvent e){Component com=(Component)e.getSource();com.setBackground(Color.pink);}public void focusLost(FocusEvent e){Component com=(Component)e.getSource();com.setBackground(backColor);}public void doMark(){for(int i=0;i<showDay.length;i++){showDay[i].removeAll();String str=showDay[i].getText().trim();try{int n=Integer.parseInt(str);if(isHaveDailyRecord(n)==true){JLabel mess=new JLabel("有");mess.setFont(new Font("TimesRoman",Font.PLAIN,11));mess.setForeground(Color.blue);showDay[i].add(mess);}}catch(Exception exp){}}calendarPad.repaint();calendarPad.validate();}public boolean isHaveDailyRecord(int n){String key=""+year+""+month+""+n;String [] dayFile=dir.list();boolean boo=false;for(int k=0;k<dayFile.length;k++){if(dayFile[k].equals(key+".txt")){boo=true;break;}}return boo;}public String getPicture_address() {String address = null;try {InputStream outOne = new FileInputStream("picture_address.txt");ObjectInputStream outTwo = new ObjectInputStream(outOne);try {address = (String) outTwo.readObject();} catch (Exception ex) {}outTwo.close();} catch (IOException eee) {}if (address != null) {return address;} else {return "picture.jpg";}}public void actionPerformed1(ActionEvent e) {if (e.getActionCommand().equals("更改图片背景")) {FileDialog dia = new FileDialog(this, "选择图片", FileDialog.LOAD);dia.setModal(true);dia.setVisible(true);if ((dia.getDirectory() != null) && (dia.getFile() != null)) {try {FileOutputStream inOne = new FileOutputStream("picture_address.txt");ObjectOutputStream inTwo = new ObjectOutputStream(inOne);inTwo.writeObject(dia.getDirectory() + dia.getFile());inTwo.close();} catch (IOException ee) {}String picturename = getPicture_address();calendarImage.setImageFile(new File(picturename));}}public static void main(String args[]){new CalendarWindow();}}CalendarPad类import javax.swing.*;import java.awt .*;import java.awt.event.*;import java.util.*;import javax.swing.JPanel;public class CalendarPad extends JPanel{int year,month,day;CalendarMessage calendarMessage;JTextField[] showDay;JLabel title[];String[] 星期={"SUN 日","MON 一","TUE 二","WED 三","THU 四","FRI 四","SAT 六"};JPanel north,center;public CalendarPad(){setLayout(new BorderLayout());north=new JPanel();north.setLayout(new GridLayout(1,7));center=new JPanel();center.setLayout(new GridLayout(6,7));add(center ,BorderLayout.CENTER );add(north,BorderLayout.NORTH );title=new JLabel[7];for(int j=0;j<7;j++){title[j]=new JLabel();title[j].setFont(new Font("TimesRoman",Font.BOLD ,12));title[j].setText(星期[j]);title[j].setHorizontalAlignment(JLabel.CENTER);title[j].setBorder(BorderFactory.createRaisedBevelBorder());north.add(title[j]);}title[0].setForeground(Color.red);title[6].setForeground(Color.blue);}public void setShowDayTextField(JTextField[]text){showDay=text;for(int i=0;i<showDay.length;i++){showDay[i].setFont(new Font("TimesRoman",Font.BOLD ,15));showDay[i].setHorizontalAlignment(JTextField.CENTER);showDay[i].setEditable(false);center.add(showDay[i]);}}public void setCalendarMessage (CalendarMessage calendarMessage){ this.calendarMessage=calendarMessage;}public void showMonthCalendar(){String[] a=calendarMessage.getMonthCalendar();for(int i=0;i<42;i++)showDay[i].setText(a[i]);validate();}}CalendarMesssage类import java.util.Calendar;public class CalendarMessage {int year=-1,month=-1,day=-1;public int getYear(){return year;}public void setMonth(int month){if(month<=12&&month>=1)this.month=month;elsethis.month =1;}public int getMonth(){return month;}public void setDay(int day){this.day =day;}public int getDay(){return day ;}public String []getMonthCalendar(){String[] day=new String[42];Calendar rili =Calendar.getInstance();rili.set(year, month-1,1);int 星期几=rili.get(Calendar.DAY_OF_WEEK )-1;int dayAmount=0;if(month==1||month==3||month==5||month==7||month==8||month==10||month== 12)dayAmount=31;if(month==4||month==6||month==9||month==11)dayAmount=30;if(month==2)if(((year%4==0)&&(year%100!=0)||year%400==0))dayAmount=29;elsedayAmount=28;for(int i=0;i<星期几;i++)day[i]="";for(int i=星期几,n=1;i<星期几+dayAmount;i++){day[i]=String.valueOf(n);n++;}for(int i=星期几+dayAmount;i<42;i++)day[i]="";return day;}public void setYear(int year) {this.year = year;}}NotePad类import java.awt.*;import javax.swing.*;import javax.swing.border.Border;import javax.swing.event.ListSelectionEvent;import javax.swing.event.ListSelectionListener;import java.io.*;import java.awt.event.*;public class NotePad extends JPanel implements ActionListener {JTextArea text;JTextField showMessage;JPopupMenu menu;JMenuItem itemCopy, itemCut, itemPaste, itemClear, btn;public NotePad() {showMessage = new JTextField();showMessage.setHorizontalAlignment(JTextField.CENTER);showMessage.setFont(new Font("TimesRoman", Font.BOLD, 16));showMessage.setForeground(Color.blue);showMessage.setBackground(Color.pink);showMessage.setBorder(BorderFactory.createRaisedBevelBorder());showMessage.setEditable(false);menu = new JPopupMenu();itemCopy = new JMenuItem("复制");itemCut = new JMenuItem("剪切");itemPaste = new JMenuItem("粘贴");itemClear = new JMenuItem("清空");btn = new JMenuItem("字体");itemCopy.addActionListener(this);itemCut.addActionListener(this);itemPaste.addActionListener(this);itemClear.addActionListener(this);btn.addActionListener(this);menu.add(itemCopy);menu.add(itemCut);menu.add(itemPaste);menu.add(itemClear);menu.add(btn);text = new JTextArea(10, 10);text.addMouseListener(new MouseAdapter() {public void mousePressed(MouseEvent e) {if (e.getModifiers() == InputEvent.BUTTON3_MASK)menu.show(text, e.getX(), e.getY());}});setLayout(new BorderLayout());add(showMessage, BorderLayout.NORTH);add(new JScrollPane(text), BorderLayout.CENTER);}public void setShowMessage(int year, int month, int day) {showMessage.setText("" + year + "年" + month + "月" + day + "日");showMessage.setForeground(Color.blue);showMessage.setFont(new Font("宋体", Font.BOLD, 15));}public void save(File dir, int year, int month, int day) {String dailyContent = text.getText();String fileName = "" + year + "" + month + "" + day + ".txt";String key = "" + year + "" + month + "" + day;String[] dayFile = dir.list();boolean boo = false;for (int k = 0; k < dayFile.length; k++) {if (dayFile[k].startsWith(key)) {boo = true;break;}}if (boo) {String m = "" + year + "年" + month + "月" + day+ "已有日志,将新的内容添加到日志吗?";int ok = JOptionPane.showConfirmDialog(this, m, "",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);if (ok == JOptionPane.YES_OPTION) {try {File f = new File(dir, fileName);RandomAccessFile out = new RandomAccessFile(f, "rw");long fileEnd = out.length();byte[] bb = dailyContent.getBytes();out.seek(fileEnd);out.write(bb);out.close();} catch (IOException exp) {}}} else {String m = "" + year + "年" + month + "月" + day + "还没有日志,保存日志吗?";int ok = JOptionPane.showConfirmDialog(this, m, "询问",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);if (ok == JOptionPane.YES_OPTION) {try {File f = new File(dir, fileName);RandomAccessFile out = new RandomAccessFile(f, "rw");long fileEnd = out.length();byte[] bb = dailyContent.getBytes();out.seek(fileEnd);out.write(bb);out.close();} catch (IOException exp) {}}}}public void delete(File dir, int year, int month, int day) {String key = "" + year + "" + month + "" + day;String[] dayFile = dir.list();boolean boo = false;for (int k = 0; k < dayFile.length; k++) {if (dayFile[k].startsWith(key)) {boo = true;break;}}if (boo) {String m = "删除" + year + "年" + month + "月" + day + "日的日志吗?";int ok = JOptionPane.showConfirmDialog(this, m, "询问",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);if (ok == JOptionPane.YES_OPTION) {String fileName = "" + year + "" + month + "" + day + ".txt";File deleteFile = new File(dir, fileName);deleteFile.delete();}}else {String m = "" + year + "" + month + "" + day + "";JOptionPane.showMessageDialog(this, m, "提示",JOptionPane.WARNING_MESSAGE);}}public void read(File dir, int year, int month, int day) {String fileName = "" + year + "" + month + "" + day + ".txt";String key = "" + year + "" + month + "" + day;String[] dayFile = dir.list();boolean boo = false;for (int k = 0; k < dayFile.length; k++) {if (dayFile[k].startsWith(key)) {boo = true;break;}}if (boo) {String m = "" + year + "" + month + "" + day + "";int ok = JOptionPane.showConfirmDialog(this, m, "询问",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);if (ok == JOptionPane.YES_OPTION) {text.setText(null);try {File f = new File(dir, fileName);FileReader inOne = new FileReader(f);BufferedReader inTwo = new BufferedReader(inOne);String s = null;while ((s = inTwo.readLine()) != null)text.append(s + "\n");inOne.close();inTwo.close();} catch (IOException exp) {}}} else {String m = "" + year + "" + month + "" + day + "";JOptionPane.showMessageDialog(this, m, "提示",JOptionPane.WARNING_MESSAGE);}}public void actionPerformed(ActionEvent e) {if (e.getSource() == itemCopy)text.copy();else if (e.getSource() == itemCut)text.cut();else if (e.getSource() == itemPaste)text.paste();else if (e.getSource() == itemClear)text.setText(null);if (e.getSource() == btn) {JFontDialog nFD = new JFontDialog("选择字体");nFD.setModal(true);nFD.setVisible(true);text.setFont(nFD.myFont);}}}class JFontDialog extends JDialog {private static final long serialVersionUID = 1L;JList fontpolics, fontstyle, fontsize;JTextField fontpolict, fontstylet, fontsizet;String example;JLabel FontResolvent;JButton buttonok, buttoncancel;Font myFont;public JFontDialog(String title) {Container container = getContentPane();container.setLayout(new BorderLayout());JPanel panel = new JPanel();panel.setLayout(new GridLayout(2, 1));JPanel FontSet, FontView;FontSet = new JPanel(new GridLayout(1, 4));FontView = new JPanel(new GridLayout(1, 2));example = "AaBbCcDdEe";FontResolvent = new JLabel(example, JLabel.CENTER);FontResolvent.setBackground(Color.WHITE);ListSelectionListener selectionListener = new ListSelectionListener() { public void valueChanged(ListSelectionEvent e) {if (((JList) e.getSource()).getName().equals("polic")) {fontpolict.setText((String) fontpolics.getSelectedValue());FontResolvent.setFont(new Font(fontpolict.getText(),FontResolvent.getFont().getStyle(), FontResolvent.getFont().getSize()));}if (((JList) e.getSource()).getName().equals("style")) {fontstylet.setText((String) fontstyle.getSelectedValue());FontResolvent.setFont(new Font(FontResolvent.getFont().getFontName(), fontstyle.getSelectedIndex(),FontResolvent.getFont().getSize()));}if (((JList) e.getSource()).getName().equals("size")) {fontsizet.setText((String) fontsize.getSelectedValue());try {Integer.parseInt(fontsizet.getText());} catch (Exception excepInt) {fontsizet.setText(FontResolvent.getFont().getSize()+ "");}FontResolvent.setFont(new Font(FontResolvent.getFont().getFontName(), FontResolvent.getFont().getStyle(),Integer.parseInt(fontsizet.getText())));}}};KeyListener keyListener = new KeyListener() {public void keyPressed(KeyEvent e) {if (e.getKeyCode() == 10) {if (((JTextField) e.getSource()).getName().equals("polic")) {FontResolvent.setFont(new Font(fontpolict.getText(),FontResolvent.getFont().getStyle(),FontResolvent.getFont().getSize()));}if (((JTextField) e.getSource()).getName().equals("style")) {fontstylet.setText((String) fontstyle.getSelectedValue());FontResolvent.setFont(new Font(FontResolvent.getFont().getFontName(), fontstyle.getSelectedIndex(),FontResolvent.getFont().getSize()));}if (((JTextField) e.getSource()).getName().equals("size")) {try {Integer.parseInt(fontsizet.getText());} catch (Exception excepInt) {fontsizet.setText(FontResolvent.getFont().getSize()+ "");}FontResolvent.setFont(new Font(FontResolvent.getFont().getFontName(), FontResolvent.getFont().getStyle(), Integer.parseInt(fontsizet.getText())));}}}public void keyReleased(KeyEvent e) {}public void keyTyped(KeyEvent e) {}};// 字体JPanel Fontpolic = new JPanel();Border border = BorderFactory.createLoweredBevelBorder();border = BorderFactory.createTitledBorder(border, "字体");Fontpolic.setBorder(border);Font[] fonts = java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getAllFonts();int taille = fonts.length;String[] policnames = new String[taille];for (int i = 0; i < taille; i++) {policnames[i] = fonts[i].getName();}fontpolics = new JList(policnames);fontpolics.setName("polic");fontpolics.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); fontpolics.addListSelectionListener(selectionListener);fontpolics.setVisibleRowCount(6);fontpolict = new JTextField(policnames[0]);fontpolict.setName("polic");fontpolict.addKeyListener(keyListener);JScrollPane jspfontpolic = new JScrollPane(fontpolics);Fontpolic.setLayout(new BoxLayout(Fontpolic, BoxLayout.PAGE_AXIS)); Fontpolic.add(fontpolict);Fontpolic.add(jspfontpolic);// 样式JPanel Fontstyle = new JPanel();border = BorderFactory.createLoweredBevelBorder();border = BorderFactory.createTitledBorder(border, "样式");Fontstyle.setBorder(border);String[] styles = { "PLAIN", "BOLD", "ITALIC", "BOLD ITALIC" };fontstyle = new JList(styles);fontstyle.setName("style");fontstyle.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); fontstyle.addListSelectionListener(selectionListener);fontstyle.setVisibleRowCount(6);fontstylet = new JTextField(styles[0]);fontstylet.setName("style");fontstylet.addKeyListener(keyListener);JScrollPane jspfontstyle = new JScrollPane(fontstyle);Fontstyle.setLayout(new BoxLayout(Fontstyle, BoxLayout.PAGE_AXIS)); Fontstyle.add(fontstylet);Fontstyle.add(jspfontstyle);// 大小JPanel Fontsize = new JPanel();border = BorderFactory.createLoweredBevelBorder();border = BorderFactory.createTitledBorder(border, "大小");Fontsize.setBorder(border);String[] sizes = { "10", "14", "18", "22", "26", "30" };fontsize = new JList(sizes);fontsize.setName("size");fontsize.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); fontsize.addListSelectionListener(selectionListener);fontsize.setVisibleRowCount(6);fontsizet = new JTextField(sizes[0]);fontsizet.setName("size");fontsizet.addKeyListener(keyListener);JScrollPane jspfontsize = new JScrollPane(fontsize);Fontsize.setLayout(new BoxLayout(Fontsize, BoxLayout.PAGE_AXIS)); Fontsize.add(fontsizet);Fontsize.add(jspfontsize);FontSet.add(Fontpolic);FontSet.add(Fontstyle);FontSet.add(Fontsize);FontView.add(FontResolvent);panel.add(FontSet);panel.add(FontView);JPanel panelnorth = new JPanel();panelnorth.setLayout(new FlowLayout());buttonok = new JButton("确定");buttoncancel = new JButton("取消");panelnorth.add(buttonok);panelnorth.add(buttoncancel);buttonok.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {myFont = FontResolvent.getFont();JFontDialog.this.setVisible(false);}});buttoncancel.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {JFontDialog.this.setVisible(false);}});container.add(panel, BorderLayout.CENTER);container.add(panelnorth, BorderLayout.SOUTH);setSize(400, 300);}}CalendarImage类import javax.swing.*;import java.io.*;import java.awt.*;public class CalendarImage extends JPanel{File imageFile;Image image;Toolkit tool;CalendarImage(){tool=getToolkit();}public void setImageFile(File f){imageFile=f;try{ image=tool.getImage(imageFile.toURI().toURL());}catch(Exception exp){}repaint();}public void paintComponent(Graphics g){super.paintComponent(g);int w=getBounds().width;int h=getBounds().height;g.drawImage(image, 0, 0, w, h, this);}}Clock类import java.applet.Applet;import java.applet.AudioClip;import java.awt.BasicStroke;import java.awt.Color;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.geom.Line2D;import java.io.File;import .MalformedURLException;import .URI;import .URL;import java.util.Date;import javax.swing.JPanel;public class Clock extends JPanel implements ActionListener { Date date;javax.swing.Timer secondTime;int hour,munite,second;Line2D secondLine,muniteLine,hourLine;Line2D m=new Line2D.Double(0,0,0,0);Line2D s=new Line2D.Double(0,0,0,0);int a,b,c,width,height;double pointSX[]=new double[60],pointSY[]=new double[60],pointMX[]=new double[60],pointMY[]=new double[60],pointHX[]=new double[60],pointHY[]=new double[60];Clock(){setBackground(Color.cyan);initPoint();secondTime=new javax.swing.Timer(1000,this);secondLine=new Line2D.Double(0,0,0,0);muniteLine=new Line2D.Double(0,0,0,0);hourLine=new Line2D.Double(0,0,0,0);secondTime.start();}private void initPoint(){width=getBounds().width;height=getBounds().height;pointSX[0]=0;pointSY[0]=-height/2*5/6;pointMX[0]=0;pointMY[0]=-(height/2*4/5);pointHX[0]=0;pointHY[0]=-(height/2*2/3);double angle=6*Math.PI/180;for(int i=0;i<59;i++){pointSX[i+1]=pointSX[i]*Math.cos(angle)-Math.sin(angle)*pointSY[i];pointSY[i+1]=pointSY[i]*Math.cos(angle)+pointSX[i]*Math.sin(angle);pointMX[i+1]=pointMX[i]*Math.cos(angle)-Math.sin(angle)*pointMY[i];pointMY[i+1]=pointMY[i]*Math.cos(angle)+pointMX[i]*Math.sin(angle);pointHX[i+1]=pointHX[i]*Math.cos(angle)-Math.sin(angle)*pointHY[i];pointHY[i+1]=pointHY[i]*Math.cos(angle)+pointHX[i]*Math.sin(angle);}for(int i=0;i<60;i++){pointSX[i]=pointSX[i]+width/2;pointSY[i]=pointSY[i]+height/2;pointMX[i]=pointMX[i]+width/2;pointMY[i]=pointMY[i]+height/2;pointHX[i]=pointHX[i]+width/2; pointHY[i]=pointHY[i]+height/2;}}public void paintComponent(Graphics g){super.paintComponent(g);initPoint();for(int i=0;i<60;i++){int m=(int)pointSX[i];int n=(int)pointSY[i];if(i%5==0){if(i==0||i==15||i==30||i==45){int k=10;g.setColor(Color.orange);g.fillOval(m-k/2, n-k/2, k, k);}else{int k=7;g.setColor(Color.orange );g.fillOval(m-k/2, n-k/2, k, k);}}else{int k=2;g.setColor(Color.black);g.fillOval(m-k/2, n-k/2, k, k);}}g.fillOval(width/2-5, height/2-5, 10, 10);Graphics2D g_2d=(Graphics2D)g;g_2d.setColor(Color.red);g_2d.draw(secondLine);BasicStroke bs=newBasicStroke(2f,BasicStroke.CAP_ROUND,BasicStroke.JOIN_MITER);g_2d.setStroke(bs);g_2d.setColor(Color.blue);g_2d.draw(muniteLine);bs=newBasicStroke(2f,BasicStroke.CAP_BUTT,BasicStroke.JOIN_MITER);g_2d.setStroke(bs);g_2d.setColor(Color.orange);g_2d.draw(hourLine);bs=newBasicStroke(4f,BasicStroke.CAP_BUTT,BasicStroke.JOIN_MITER);g_2d.setStroke( bs);}public void actionPerformed(ActionEvent e){if(e.getSource()==secondTime){date=new Date();String s=date.toString();。

JAVA课程设计报告-日历记事本

JAVA课程设计报告-日历记事本

东华理工大学信息工程学院《JAVA技术应用开发》课程设计报告日历记事本******学号:************同组成员:无完成日期:2015.7.3目录1.项目概述 (2)2.需求分析 (2)3.概要设计 (3)3.1功能结构 (3)3.2布局 (3)4.详细设计及功能实现 (4)4.1结构 (4)4.2主界面 (5)4.3日历模块 (8)4.4记事本模块 (9)4.5记事列表模块 (12)4.6提醒功能 (13)5.运行测试 (15)6.总结 (19)1.项目概述日历记事本是将日历和记事本结合在一起,用户可以任意选择某一天,保存这一天需要记录的记事,或者任意查看某一天已经记录的记事。

同时还应具备提醒功能,当到达提醒时间时会自动弹出提醒。

2.需求分析日历记事本大致分为日历和记事两个部分。

①日历部分首先,需要选择日期,用户可以通过点击按钮选择前一年或后一年,同样也可以选择前一个月或后一个月,当月份为1月时,用户点击前一个月,会自动跳转到前一年的12月,同理,在12月时点击后一个月,会自动跳转到下一年的1月。

另外,当选择跨度比较大时,需要多次点击按钮,很不方便,所以需要一个下拉框,可以直接选择某一年或某一个月。

当用户改变选择日期时,日历会自动显示出这一个月的日历,并且可以通过点击某一天,来进行添加记事的操作,鼠标经过日历或点击日历时,会有不同的效果以提示用户这是可以点击的。

②记事部分首先,需要一个文本域给用户编辑记事内容,记事和日历部分所选择的日期是相关的,当用户点击日历选择某一天,则记事本上端会显示出选择的日期信息。

同时,记事应该还具有设置提醒的功能,用户点击设置提醒按钮后,会弹出一个新的对话框,用来选择提醒时间。

为保存记事,应将记事以文件的形式存储在计算机上。

另外,当用户想查看所有记事,或者想搜索某一则记事时,可以将日历部分换成一个表格,列出所有的记事,或者符合搜索结果的记事。

3.概要设计3.1功能结构日历记事本以功能划分,大致分为日历、记事列表及记事本三个部分:3.2布局软件界面的大致布局如下图,可以通过点击按钮将日历切换为记事列表4.详细设计及功能实现4.1结构①类结构②文件存储结构程序第一次运行时,会在设定的位置自动创建路径:“.../日历记事本/data/”。

Java程序日历记事本系统课程设计

Java程序日历记事本系统课程设计

目录1.课程设计目的………………………………………………………………页码2.课程设计题目描述和要求…………………………………………页码3.课程设计报告内容…………………………………………………………页码3.1总体设计……………………………………………………………………页码3.2详细设计……………………………………………………………………页码3.3编码实现……………………………………………………………………页码3.4系统测试……………………………………………………………………页码3.5系统运行……………………………………………………………………页码4.总结…………………………………………………………………………页码参考文献………………………………………………………………………页码1.课程设计目的1.学习Java程序开发的环境搭建与配置,并且在实际运用中学习和和掌握Java程序开发的过程2.通过课程设计进一步掌握Java程序设计语言的基础内容,如用户图形界面设计等3.通过亲自设计,编写,调试程序来扩展知识面和动手操作能力2.课程设计题目描述和要求设计一个日历记事本.具体要求如下:1.可以设置日历的日期2. 可以判断当前日期是否有日志记录3. 对有日志记录的日期,可以对该日期的日志记录进行修改和删除4. 对没有日志记录的日期,可以创建并保存新建的日志记录3.课程设计报告内容3.1总体设计1> 功能图2> 流程图3> 类图3.2详细设计表1 日历记事本系统主面板与日历板模块(CalendarPad.java)表2 日历记事本系统年设置模块(Year.java)表3 日历记事本系统月设置模块(Month.java)表4 日历记事本系统记事本模块(NotePad.java)3.3编码实现1.日历记事本系统主面板与日历板模块(CalendarPad.java)该模块设计主要主要包含以下成员变量:年(year)月(month)日(day)存放日期的表(Hashtable)存放日志的文件(File)主要方法有:创建程序主面板的构造方法(CalendarPad)处理ActionEvent事件的接口方法(actionPerformed)程序开始运行的main()方法。

java课程设计记事本设计报告

java课程设计记事本设计报告

java课程设计记事本设计报告一、教学目标本课程旨在通过Java编程语言实现一个记事本应用程序,让学生掌握Java编程的基本概念和方法,培养学生的编程能力和解决问题的能力。

1.理解Java编程语言的基本语法和结构。

2.掌握Java编程中的数据类型、变量、运算符、控制语句等基本概念。

3.学习Java中的类和对象的概念,理解封装、继承和多态的原理。

4.熟悉Java中的常用类库和方法。

5.能够运用Java编程语言编写简单的程序。

6.能够使用Java编程语言实现一个记事本应用程序,包括文本的增删改查等功能。

7.能够分析并解决编程过程中遇到的问题。

情感态度价值观目标:1.培养学生的团队合作意识和沟通能力,通过小组合作完成项目。

2.培养学生的创新思维和解决问题的能力,鼓励学生进行自主学习和探索。

3.培养学生的学习兴趣和自信心,让学生感受到编程的乐趣和成就感。

二、教学内容本课程的教学内容主要包括Java编程语言的基本概念和方法,以及记事本应用程序的设计和实现。

1.Java编程语言的基本概念和方法:–数据类型、变量、运算符、控制语句等基本概念。

–类和对象的概念,封装、继承和多态的原理。

–常用类库和方法的使用。

2.记事本应用程序的设计和实现:–用户界面设计:创建文本框、按钮等控件,实现用户输入和显示功能。

–文件操作:实现文件的打开、保存、关闭等功能,使用文件读写技术。

–文本处理:实现文本的增删改查等功能,使用数据结构和算法进行文本管理。

三、教学方法本课程将采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法等,以激发学生的学习兴趣和主动性。

1.讲授法:教师通过讲解Java编程语言的基本概念和方法,以及记事本应用程序的设计和实现,引导学生掌握相关知识。

2.讨论法:学生分组进行讨论,分享自己的理解和思路,互相学习和交流。

3.案例分析法:分析实际案例,让学生了解记事本应用程序的实际应用场景和设计思路。

4.实验法:学生通过编写代码和进行实验,实现记事本应用程序的功能,培养学生的实际编程能力和解决问题的能力。

日历记事本课程设计报告

日历记事本课程设计报告

Java程序设计课程设计报告XXX日历记事本专业XXX学生XXX班级XXX学号XXX指导教师XXX完成日期XXX目录1概述 (1)1.1 课程设计目的 (1)1.2 课程设计容 (1)2 系统需求分析 (1)2.1 系统目标 (1)2.2 主体功能 (1)2.3开发环境 (1)3系统概要设计 (2)3.1 系统的功能模块划分与系统流程图 (2)4 系统详细设计 (2)5 测试 (4)5.1 测试方案 (4)5.2 测试结果 (4)6 小结 (6)参考文献 (7)附录 (8)附录1 源程序清单 (8)日历记事本1 概述1.1 课程设计目的1) 巩固和提高java编程技术。

2)培养掌握成学设计的基本思路和方法。

3)加强研发、调试程序的能力。

4)增强分析、解决问题的能力。

5)提高科技论文写作能力。

1.2 课程设计容设计GUI界面的日历记事本。

系统将日历、记事本功能结合在一起,用户可以方便地在任何日期记录下有关容或查看某个日期的记录容。

2 系统需求分析2.1 系统目标1.系统界面的左侧是日历。

该日历可以按年份前后翻动,鼠标单击“上年”按钮时,当前日历的年份减一;当鼠标左键单击“下年”按钮,当前日历的年份加一。

2.该日历也可以在某年按月前后翻动。

当鼠标左键单击“上月”按钮时,当前日历的月份减一;当鼠标左键单击“下月”按钮时,当前日历的月份加一。

3.使用鼠标左键单击选定的日期,如已有记录容,系统将弹出对话框提示该日已有记录容,并询问用户是否用记事本显示该容。

4.用户选择具体日期后,可以将记事本的当前容保存起来,形成日志。

2.2 主体功能用户可以方便地在任何日期记录下有关容或查看某个日期的记录容。

通过按按钮“上年”和“下年”对年份进行翻页。

通过按按钮“上月”和“下月”对月份进行翻页。

用户可以通过输入年份来查看自己的日志。

2.3 开发环境Windows XP;jdk1.5.0-0-05;ultraedit开发工具3 系统概要设计3.1 系统的功能模块划分与系统流程图本日历记事本共有4个java源文件。

Java日历记事本课程设计报告

Java日历记事本课程设计报告

Java 日历记事本课程设计报告在设计日历记事本时,需要编写6个JAVA源文件:、、、、和效果图如下. CalendarWindow 类import .*;import .*;import .*;import .*;public class CalendarWindow extends JFrameimplements ActionListener,MouseListener,FocusListener{int year,month,day;CalendarMessage calendarMessage;CalendarPad calendarPad;NotePad notePad;JTextField showYear,showMonth;JTextField[] showDay;CalendarImage calendarImage;String picturename;Clock clock;JButton nextYear,previousYear,nextMonth,previousMonth;JButton saveDailyRecord,deleteDailyRecord,readDailyRecord;JButton getPicture;File dir;Color backColor= ;public CalendarWindow(){dir=new File("./dailyRecord");();showDay=new JTextField[42];for(int i=0;i<;i++){showDay[i]=new JTextField();showDay[i].setBackground(backColor);showDay[i].setLayout(new GridLayout(3,3));showDay[i].addMouseListener(this);showDay[i].addFocusListener(this);}calendarMessage=new CalendarMessage();calendarPad=new CalendarPad();notePad=new NotePad();Calendar calendar=();(new Date());year=;month=+1; day=;(year);(month);(day);(calendarMessage);(showDay); (year,month,day);();doMark(); calendarImage=new CalendarImage();(new File(""));clock=new Clock();JSplitPane splitV1=new JSplitPane,calendarPad,calendarImage); JSplitPane splitV2=new JSplitPane,notePad,clock);JSplitPane splitH=new JSplitPane,splitV1,splitV2); add(splitH,; showYear=new JTextField(""+year,6);(new Font("TimesRoman",,12));JshowMonth=new JTextField(""+month,4); (newFont("TimesRoman",,12));JnextYear=new JButton(" 下年"); previousYear=new JButton(" 上年"); nextMonth=new JButton(" 下月"); previousMonth=new JButton(" 上月");(this);(this);(this);(this);JPanel north=new JPanel();(previousYear);(showYear);(nextYear);(previousMonth);(showMonth);(nextMonth);add(north,;saveDailyRecord=new JButton("deleteDailyRecord=new JButton("readDailyRecord=new JButton("(this);(this);(this); JPanel pSouth=new JPanel();(saveDailyRecord);(deleteDailyRecord);(readDailyRecord); add(pSouth,;getPicture=new JButton(" 选择日历图像 "); (this);(getPicture); add(pSouth,;setVisible(true); setBounds(60,60,660,480);保存日志 "); 删除日志 "); 读取日志 ");validate();setDefaultCloseOperation;}public void actionPerformed(ActionEvent e){ if()==nextYear){ year++;(""+year);(year);(calendarMessage);();(year,month,day);doMark();}else if()==previousYear){year--;(""+year);(year);(calendarMessage);();(year,month,day);doMark();}else if()==nextMonth){month++;if(month<1) month=12; (""+month);(month);(calendarMessage);();(year,month,day); doMark();}else if()==previousMonth){month--;if(month<1) month=12; (""+month);(month);(calendarMessage);();(year,month,day); doMark();}else if()==showYear){String s=().trim();char a[]=(); boolean boo=false;for(int i=0;i<;i++) if(!(a[i])))boo=true;if(boo==true)(this, " 您输入了非法年份"," 警告",;else if(boo==false) year=(s);(""+year);(year);(calendarMessage);();(year,month,day);doMark();}else if()==saveDailyRecord){(dir,year,month,day);doMark();}else if()==deleteDailyRecord){(dir,year,month,day);doMark();}else if()==readDailyRecord){(dir,year,month,day);}else if () ==getPicture ) {FileDialog fd=new FileDialog(this," 打开文件对话框");(true);String fileopen = null, filename = null;fileopen = ();filename = ();(new File(fileopen,filename));}}public void mousePressed(MouseEvent e){JTextField text=(JTextField)();String str=().trim();try{ day=(str);}catch(NumberFormatException exp){}(day);(year,month,day);}public void mouseReleased(MouseEvent e){}public void mouseEntered(MouseEvent e){}public void mouseExited(MouseEvent e){}public void mouseClicked(MouseEvent e){}public void focusGained(FocusEvent e){ Component com=(Component)();J}public void focusLost(FocusEvente){ Component com=(Component)();(backColor);}public void doMark(){for(int i=0;i<;i++){showDay[i].removeAll();String str=showDay[i].getText().trim();try{int n=(str);if(isHaveDailyRecord(n)==true){JLabel mess=new JLabel(" 有");(new Font("TimesRoman",,11));JshowDay[i].add(mess);}}catch(Exception exp){}}();();}public boolean isHaveDailyRecord(int n){String key=""+year+""+month+""+n;String [] dayFile=();boolean boo=false;for(int k=0;k<;k++){if(dayFile[k].equals(key+".txt")){ boo=true;break;}} return boo;}public String getPicture_address() {String address = null;try {InputStream outOne = new FileInputStream("");ObjectInputStream outTwo = new ObjectInputStream(outOne); try { address = (String) ();} catch (Exception ex) {}();} catch (IOException eee) {}if (address != null) {return address;} else {return "";}}public void actionPerformed1(ActionEvent e) {if ().equals(" 更改图片背景")) {FileDialog dia = new FileDialog(this, "选择图片", ;(true);(true);if (() != null) && () != null)) {try {FileOutputStream inOne = new FileOutputStream( "");ObjectOutputStream inTwo =new ObjectOutputStream(inOne);() + ());();} catch (IOException ee) {}String picturename = getPicture_address();(new File(picturename));}}}public static void main(String args[]){new CalendarWindow();}}CalendarPad 类import .*; import .*;import .*;import class CalendarPad extends JPanel{int year,month,day;CalendarMessage calendarMessage;JTextField[] showDay;JLabel title[];String[] 星期={"SUN 日","MON —","TUE 二","WED 三","THU 四","FRI 四","SAT 六"};JPanel north,center;public CalendarPad(){setLayout(new BorderLayout());north=new JPanel();(new GridLayout(1,7)); center=new JPanel();(new GridLayout(6,7)); add(center , );add(north, );title=new JLabel[7];for(int j=0;j<7;j++){title[j]=new JLabel();title[j].setFont(new Font("TimesRoman", ,12)); title[j].setText( 星期[j]);title[j].setHorizontalAlignment;title[j].setBorder());(title[j]);}title[0].setForeground;title[6].setForeground;}public void setShowDayTextField(JTextField[]text){ showDay=text;for(int i=0;i<;i++){showDay[i].setFont(new Font("TimesRoman", ,15));showDay[i].setHorizontalAlignment;showDay[i].setEditable(false);(showDay[i]);}}public void setCalendarMessage(CalendarMessage calendarMessage){=calendarMessage;}public void showMonthCalendar(){String[] a=();for(int i=0;i<42;i++)showDay[i].setText(a[i]);validate();}}CalendarMesssage 类import class CalendarMessage {int year=-1,month=-1,day=-1;public int getYear(){return year;}public void setMonth(int month){if(month<=12&&month>=1)=month;else=1;}public int getMonth(){return month;}public void setDay(int day){=day;}public int getDay(){return day ;}public String []getMonthCalendar(){String[] day=new String[42];Calendar rili =();(year, month-1,1);int 星期几= )-1;int dayAmount=0;if(month==1||month==3||month==5||month==7||month==8||month==10||m onth==12)dayAmount=31;if(month==4||month==6||month==9||month==11) dayAmount=30;if(month==2)if(((year%4==0)&&(year%100!=0)||year%400==0)) dayAmount=29;elsedayAmount=28;for(int i=0;i< 星期几;i++)day[i]="";for(int i= 星期几,n=1;i< 星期几+dayAmount;i++){day[i]=(n);n++;}for(int i= 星期几+dayAmount;i<42;i++)day[i]="";return day;}public void setYear(int year) {= year;}}NotePad 类import .*;import .*;import .*;import class NotePad extends JPanel implements ActionListener { JTextArea text;JTextField showMessage;JPopupMenu menu;JMenuItem itemCopy, itemCut, itemPaste, itemClear, btn;public NotePad() {showMessage = new JTextField();J(new Font("TimesRoman", , 16));());(false);menu = new JPopupMenu(); itemCopy = new JMenuItem(" 复制"); itemCut = new JMenuItem(" 剪切"); itemPaste = new JMenuItem(" 粘贴"); itemClear = new JMenuItem(" 清空");btn = new JMenuItem(" 字体");(this);(this);(this);(this);(this);(itemCopy);(itemCut);(itemPaste);(itemClear);(btn);text = new JTextArea(10, 10);(new MouseAdapter() {public void mousePressed(MouseEvent e) { if () ==(text, (), ());}});setLayout(new BorderLayout());add(showMessage, ;add(new JScrollPane(text), ;}public void setShowMessage(int year, int month, int day) { ("" + year + " 年" + month + " 月" + day + " 日");J(new Font(" 宋体", , 15));}public void save(File dir, int year, int month, int day) { String dailyContent = ();String fileName = "" + year + "" + month + "" + day + ".txt";String key = "" + year + "" + month + "" + day;String[] dayFile = (); boolean boo = false;for (int k = 0; k < ; k++) {if (dayFile[k].startsWith(key)) { boo = true; break;}} if (boo) {String m = "" + year + " 年" + month + " 月" + day+ " 已有日志,将新的内容添加到日志吗";int ok = (this, m, "", if (ok == {try {File f = new File(dir, fileName);RandomAccessFile out = new RandomAccessFile(f,"rw");long fileEnd = ();byte[] bb = ();(fileEnd);(bb);();} catch (IOException exp) {}}} else {String m = "" + year + "年" + month + " 月 " + day + " 日志,保存日志吗 ";int ok = (this, m, " 询问 ", if (ok == {try {File f = new File(dir, fileName);RandomAccessFile out = new RandomAccessFile(f,long fileEnd = ();byte[] bb = ();(fileEnd);(bb);();} catch (IOException exp) {} }}}public void delete(File dir, int year, int month, int day) { String key = "" + year +"" + month + "" + day; String[] dayFile = ();boolean boo = false;for (int k = 0; k < ; k++) {if (dayFile[k].startsWith(key)) {boo = true;break;}} if (boo) {String m = " 删除 " + year + " 年 " + month + " 月 " + day + " 日 的日志还没有 "rw");吗";int ok = (this, m, " 询问", if (ok == {String fileName = "" + year + "" + month + "" + day + ".txt";File deleteFile = new File(dir, fileName);();}}else {String m = "" + year + "" + month + "" + day + "";(this, m, " 提示",public void read(File dir, int year, int month, int day) {String fileName = "" + year + "" + month + "" + day + ".txt";String key = "" + year + "" + month + "" + day;String[] dayFile = ();boolean boo = false;for (int k = 0; k < ; k++) {if (dayFile[k].startsWith(key)) { boo = true;break;}} if (boo) {String m = "" + year + "" + month + "" + day + "" int ok = (this, m, " 询问", if (ok == {(null);try {File f = new File(dir, fileName);FileReader inOne = new FileReader(f);BufferedReader inTwo = new BufferedReader(inOne);String s = null;while ((s = ()) != null)(s + "\n");();();} catch (IOException exp) {}}} else {String m = "" + year + "" + month + "" + day + "";public void actionPerformed(ActionEvent e) { if () ==itemCopy)();else if () == itemCut)();else if () == itemPaste)();else if () == itemClear)(null);if () == btn) {JFontDialog nFD = new JFontDialog("(true);(true);}}}class JFontDialog extends JDialog {private static final long serialVersionUID = 1L;JList fontpolics, fontstyle, fontsize;(this, m, "提示 ",选择字体 ");JTextField fontpolict, fontstylet, fontsizet;String example;JLabel FontResolvent;JButton buttonok, buttoncancel;Font myFont;public JFontDialog(String title) {Container container = getContentPane();(new BorderLayout());JPanel panel = new JPanel();(new GridLayout(2, 1));JPanel FontSet, FontView;FontSet = new JPanel(new GridLayout(1, 4));FontView = new JPanel(new GridLayout(1, 2));example = "AaBbCcDdEe";FontResolvent = new JLabel(example, ;ListSelectionListener selectionListenernew ListSelectionListener() {public void valueChanged(ListSelectionEvent e){ if (((JList) ()).getName().equals("polic")){ ((String) ());(new Font(),().getStyle(), FontResolvent.getFont().getSize()));} }; }if (((JList) ()).getName().equals("style")) { ((String) ());(new Font().getFontName(), (),().getSize()));}if (((JList) ()).getName().equals("size")) { ((String) ());try {());} catch (Exception excepInt) {().getSize()+ "");}(new Font().getFontName(), ().getStyle(),())));}KeyListener keyListener = new KeyListener() {public void keyPressed(KeyEvent e) {if () == 10) {if (((JTextField) ()).getName().equals("polic")) {(new Font(),().getStyle(),().getSize()));}if (((JTextField) ()).getName().equals("style")) { ((String) fontstyle.getSelectedValue());(new Font().getFontName(), (),().getSize()));}if (((JTextField) ()).getName().equals("size")) { try {());} catch (Exception excepInt) {().getSize()Illi );}(new Font().getFontName(), () .getStyle(),(fontsizet .getText())));}}}public void keyReleased(KeyEvent e) {}public void keyTyped(KeyEvent e) {}};etLocalGraphicsEnvironment().getAllFonts();int taille = ;String[] policnames = new String[taille];for (int i = 0; i < taille; i++) {policnames[i] = fonts[i].getName();}fontpolics = new JList(policnames);("polic");(selectionListener);(6);fontpolict = new JTextField(policnames[0]);("polic");(keyListener);JScrollPane jspfontpolic = new JScrollPane(fontpolics);(new BoxLayout(Fontpolic, );(fontpolict);(jspfontpolic);import .*; import .*;public class CalendarImage extends JPanel{File imageFile;Image image;Toolkit tool;CalendarImage(){tool=getToolkit();}public void setImageFile(File f){imageFile=f;try{ image=().toURL());}catch(Exception exp){}repaint();}public void paintComponent(Graphics g){(g);int w=getBounds().width;int h=getBounds().height;(image, 0, 0, w, h, this);}}Clock 类import class Clock extends JPanelimplements ActionListener {Date date;secondTime;int hour,munite,second;Line2D secondLine,muniteLine,hourLine;Line2D m=new (0,0,0,0);Line2D s=new (0,0,0,0);int a,b,c,width,height;double pointSX[]=new double[60],pointSY[]=new double[60],pointMX[]=new double[60],pointMY[]=new double[60],pointHX[]=new double[60],pointHY[]=new double[60];Clock(){setBackground;initPoint();secondTime=new secondLine=new (0,0,0,0);muniteLine=new (0,0,0,0);hourLine=new (0,0,0,0);();}private void initPoint(){width=getBounds().width;height=getBounds().height;pointSX[0]=0;pointSY[0]=-height/2*5/6;pointMX[0]=0; pointMY[0]=-(height/2*4/5);pointHX[0]=0;pointHY[0]=-(height/2*2/3);double angle=6*180;for(int i=0;i<59;i++){pointSX[i+1]=pointSX[i]*(angle)(angle)*pointSY[i];pointSY[i+1]=pointSY[i]*(angle)+pointSX[i]*(angle);pointMX[i+1]=pointMX[i]*(angle)(angle)*pointMY[i];pointMY[i+1]=pointMY[i]*(angle)+pointMX[i]*(angle);pointHX[i+1]=pointHX[i]*(angle)(angle)*pointHY[i];pointHY[i+1]=pointHY[i]*(angle)+pointHX[i]*(angle);}for(int i=0;i<60;i++){pointSX[i]=pointSX[i]+width/2;pointSY[i]=pointSY[i]+height/2;pointMX[i]=pointMX[i]+width/2;pointMY[i]=pointMY[i]+height/2;pointHX[i]=pointHX[i]+width/2; pointHY[i]=pointHY[i]+height/2;}}public void paintComponent(Graphics g){(g);initPoint();for(int i=0;i<60;i++){int m=(int)pointSX[i];int n=(int)pointSY[i];if(i%5==0){ if(i==0||i==15||i==30||i==45){ int k=10;J(m-k/2, n-k/2, k, k);}else{int k=7;);(m-k/2, n-k/2, k, k);}}else{int k=2;J(m-k/2, n-k/2, k, k);}}(width/2-5, height/2-5, 10, 10);Graphics2D g_2d=(Graphics2D)g;J(secondLine);BasicStroke bs=new BasicStroke(2f,,;(bs);(muniteLine); bs=new BasicStroke(2f,,;(bs);J(hourLine); bs=new BasicStroke(4f,,;(bs);}public void actionPerformed(ActionEvent e){ if()==secondTime){ date=new Date();String s=(); hour=(11, 13));munite=(14, 16)); second=(17, 19));int h=hour%12; a=second; b=munite;c=h*5+munite/12;(width/2,height/2,(int)pointSX[a],(int)pointSY[a]);(width/2,height/2,(int)pointMX[b],(int)pointMY[b]);(width/2,height/2,(int)pointHX[c],(int)pointHY[c]); repaint(); if ((munite==0)&&(second==0)){} }try{File f=new File("");URI uri=();URL url=();AudioClip aau;aau=(url);();}catch(MalformedURLException ex){();}}}。

java课程设计日历记事本

java课程设计日历记事本

java课程设计日历记事本湖南人文科技学院计算机系2009年6月19日- 1 -::1;(1)为用户提供一个简便的日历记事本;(2)对java技术的进一步了解和简单的运用;(3)初步的接触软件工程;26月8日分析课题、分配任务;对题目进行初步分析 6月9日建立模型,完成整体设计以及功能模块分析 6月10日确立每个类的功能,完成对算法的分析 6月11日完成CalendarPad类的设计6月12日完成对Year类的设计6月13日完成对Month类的设计6月14日完成对NotePad类的设计6月15日紧系程序测试与修改6月16日完成设计,整理说明书6月19日打包发布程序设计成绩:(教师填写)指导老师:(签字)2009年月日- 2 -摘要 ..................................................................... ................................................................... - 4 - 1. 引言 ..................................................................... ...................................................................... - 5 - 2.设计目的与任务 ..................................................................... ................................................... - 5 - 3.设计方案...................................................................... ............................................................... - 6 -3.1 总体设计 ..................................................................... ................................................... - 6 -3.2设计要求 ..................................................................... .................................................... - 6 -3.3系统的主要功能...................................................................... ....................................... - 6 -3.4系统功能结构图...................................................................... ....................................... - 6 -3.5运行功能(截图) ................................................................... ..................................... - 7 -4.结束语 ..................................................................... .................................................................... - 9 - 5.致谢 ..................................................................... .................................................................... - 9 - 6.参考文献...................................................................... ............................................................. - 10 - 7.附录A:源程序 ..................................................................... .................................................... - 11 - 8附录B:编码规范 ..................................................................... ............................................. - 24 -- 3 -本课程设计通过代码实现将理论知识和具体实践相结合,巩固提高了对JAVA的相关方法与概念的理解,使学生的发散思维及动手能力进一步加强,加强对计算机及软件工程的进一步了解。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Java日历记事本课程设计报告在设计日历记事本时,需要编写6个JA V A源文件:CalendarWindow.java、CalendarPad.java、NotePad.java、CalendarImage.java、Clock.java和CalendarMesssage.java效果图如下. CalendarWindow类import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.util.*;import java.io.*;public class CalendarWindow extends JFrame implements ActionListener,MouseListener,FocusListener{int year,month,day;CalendarMessage calendarMessage;CalendarPad calendarPad;NotePad notePad;JTextField showYear,showMonth;JTextField[] showDay;CalendarImage calendarImage;String picturename;Clock clock;JButton nextYear,previousYear,nextMonth,previousMonth;JButton saveDailyRecord,deleteDailyRecord,readDailyRecord;JButton getPicture;File dir;Color backColor=Color.white ;public CalendarWindow(){dir=new File("./dailyRecord");dir.mkdir();showDay=new JTextField[42];for(int i=0;i<showDay.length;i++){showDay[i]=new JTextField();showDay[i].setBackground(backColor);showDay[i].setLayout(new GridLayout(3,3));showDay[i].addMouseListener(this);showDay[i].addFocusListener(this);}calendarMessage=new CalendarMessage();calendarPad=new CalendarPad();notePad=new NotePad();Calendar calendar=Calendar.getInstance();calendar.setTime(new Date());year=calendar.get(Calendar.YEAR);month=calendar.get(Calendar.MONTH)+1;day=calendar.get(Calendar.DAY_OF_MONTH);calendarMessage.setYear(year);calendarMessage.setMonth(month);calendarMessage.setDay(day);calendarPad.setCalendarMessage(calendarMessage);calendarPad.setShowDayTextField(showDay);notePad.setShowMessage(year,month,day);calendarPad.showMonthCalendar();doMark();calendarImage=new CalendarImage();calendarImage.setImageFile(new File("flower.jpg"));clock=new Clock();JSplitPane splitV1=newJSplitPane(JSplitPane.VERTICAL_SPLIT,calendarPad,calendarImage);JSplitPane splitV2=new JSplitPane(JSplitPane.VERTICAL_SPLIT,notePad,clock);JSplitPane splitH=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,splitV1,splitV2);add(splitH,BorderLayout.CENTER);showYear=new JTextField(""+year,6);showYear.setFont(new Font("TimesRoman",Font.BOLD,12));showYear.setHorizontalAlignment(JTextField.CENTER);showMonth=new JTextField(""+month,4);showMonth.setFont(new Font("TimesRoman",Font.BOLD,12));showMonth.setHorizontalAlignment(JTextField.CENTER);nextYear=new JButton("下年");previousYear=new JButton("上年");nextMonth=new JButton("下月");previousMonth=new JButton("上月");nextYear.addActionListener(this);previousYear.addActionListener(this);nextMonth.addActionListener(this);previousMonth.addActionListener(this);JPanel north=new JPanel();north.add(previousYear);north.add(showYear);north.add(nextYear);north.add(previousMonth);north.add(showMonth);north.add(nextMonth);add(north,BorderLayout.NORTH);saveDailyRecord=new JButton("保存日志");deleteDailyRecord=new JButton("删除日志");readDailyRecord=new JButton("读取日志");saveDailyRecord.addActionListener(this);deleteDailyRecord.addActionListener(this);readDailyRecord.addActionListener(this);JPanel pSouth=new JPanel();pSouth.add(saveDailyRecord);pSouth.add(deleteDailyRecord);pSouth.add(readDailyRecord);add(pSouth,BorderLayout.SOUTH);getPicture=new JButton("选择日历图像");getPicture.addActionListener(this);pSouth.add(getPicture);add(pSouth,BorderLayout.SOUTH);setVisible(true);setBounds(60,60,660,480);validate();setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }public void actionPerformed(ActionEvent e){if(e.getSource()==nextYear){year++;showYear.setText(""+year);calendarMessage.setYear(year);calendarPad.setCalendarMessage(calendarMessage);calendarPad.showMonthCalendar();notePad.setShowMessage(year,month,day);doMark();}else if(e.getSource()==previousYear){year--;showYear.setText(""+year);calendarMessage.setYear(year);calendarPad.setCalendarMessage(calendarMessage);calendarPad.showMonthCalendar();notePad.setShowMessage(year,month,day);doMark();}else if(e.getSource()==nextMonth){month++;if(month<1) month=12;showMonth.setText(""+month);calendarMessage.setMonth(month);calendarPad.setCalendarMessage(calendarMessage);calendarPad.showMonthCalendar();notePad.setShowMessage(year,month,day);doMark();}else if(e.getSource()==previousMonth){month--;if(month<1) month=12;showMonth.setText(""+month);calendarMessage.setMonth(month);calendarPad.setCalendarMessage(calendarMessage);calendarPad.showMonthCalendar();notePad.setShowMessage(year,month,day);doMark();}else if(e.getSource()==showYear){String s=showYear.getText().trim();char a[]=s.toCharArray();boolean boo=false;for(int i=0;i<a.length;i++)if(!(Character.isDigit(a[i])))boo=true;if(boo==true)JOptionPane.showMessageDialog(this, "您输入了非法年份","警告",JOptionPane.WARNING_MESSAGE);else if(boo==false)year=Integer.parseInt(s);showYear.setText(""+year);calendarMessage.setYear(year);calendarPad.setCalendarMessage(calendarMessage);calendarPad.showMonthCalendar();notePad.setShowMessage(year,month,day);doMark();}else if(e.getSource()==saveDailyRecord){notePad.save(dir,year,month,day);doMark();}else if(e.getSource()==deleteDailyRecord){notePad.delete(dir,year,month,day);doMark();}else if(e.getSource()==readDailyRecord){notePad.read(dir,year,month,day);}else if (e.getSource() ==getPicture ) {FileDialog fd=new FileDialog(this,"打开文件对话框");fd.setVisible(true);String fileopen = null, filename = null;fileopen = fd.getDirectory();filename = fd.getFile();calendarImage.setImageFile(new File(fileopen,filename));}}public void mousePressed(MouseEvent e){JTextField text=(JTextField)e.getSource();String str=text.getText().trim();try{ day=Integer.parseInt(str);}catch(NumberFormatException exp){}calendarMessage.setDay(day);notePad.setShowMessage(year,month,day);}public void mouseReleased(MouseEvent e){}public void mouseEntered(MouseEvent e){}public void mouseExited(MouseEvent e){}public void mouseClicked(MouseEvent e){}public void focusGained(FocusEvent e){Component com=(Component)e.getSource();com.setBackground(Color.pink);}public void focusLost(FocusEvent e){Component com=(Component)e.getSource();com.setBackground(backColor);}public void doMark(){for(int i=0;i<showDay.length;i++){showDay[i].removeAll();String str=showDay[i].getText().trim();try{int n=Integer.parseInt(str);if(isHaveDailyRecord(n)==true){JLabel mess=new JLabel("有");mess.setFont(new Font("TimesRoman",Font.PLAIN,11));mess.setForeground(Color.blue);showDay[i].add(mess);}}catch(Exception exp){}}calendarPad.repaint();calendarPad.validate();}public boolean isHaveDailyRecord(int n){String key=""+year+""+month+""+n;String [] dayFile=dir.list();boolean boo=false;for(int k=0;k<dayFile.length;k++){if(dayFile[k].equals(key+".txt")){boo=true;break;}}return boo;}public String getPicture_address() {String address = null;try {InputStream outOne = new FileInputStream("picture_address.txt");ObjectInputStream outTwo = new ObjectInputStream(outOne);try {address = (String) outTwo.readObject();} catch (Exception ex) {}outTwo.close();} catch (IOException eee) {}if (address != null) {return address;} else {return "picture.jpg";}}public void actionPerformed1(ActionEvent e) {if (e.getActionCommand().equals("更改图片背景")) {FileDialog dia = new FileDialog(this, "选择图片", FileDialog.LOAD);dia.setModal(true);dia.setVisible(true);if ((dia.getDirectory() != null) && (dia.getFile() != null)) {try {FileOutputStream inOne = new FileOutputStream("picture_address.txt");ObjectOutputStream inTwo = new ObjectOutputStream(inOne);inTwo.writeObject(dia.getDirectory() + dia.getFile());inTwo.close();} catch (IOException ee) {}String picturename = getPicture_address();calendarImage.setImageFile(new File(picturename));}}}public static void main(String args[]){new CalendarWindow();}}CalendarPad类import javax.swing.*;import java.awt .*;import java.awt.event.*;import java.util.*;import javax.swing.JPanel;public class CalendarPad extends JPanel{int year,month,day;CalendarMessage calendarMessage;JTextField[] showDay;JLabel title[];String[] 星期={"SUN 日","MON 一","TUE 二","WED 三","THU 四","FRI 四","SAT 六"};JPanel north,center;public CalendarPad(){setLayout(new BorderLayout());north=new JPanel();north.setLayout(new GridLayout(1,7));center=new JPanel();center.setLayout(new GridLayout(6,7));add(center ,BorderLayout.CENTER );add(north,BorderLayout.NORTH );title=new JLabel[7];for(int j=0;j<7;j++){title[j]=new JLabel();title[j].setFont(new Font("TimesRoman",Font.BOLD ,12));title[j].setText(星期[j]);title[j].setHorizontalAlignment(JLabel.CENTER);title[j].setBorder(BorderFactory.createRaisedBevelBorder());north.add(title[j]);}title[0].setForeground(Color.red);title[6].setForeground(Color.blue);}public void setShowDayTextField(JTextField[]text){showDay=text;for(int i=0;i<showDay.length;i++){showDay[i].setFont(new Font("TimesRoman",Font.BOLD ,15));showDay[i].setHorizontalAlignment(JTextField.CENTER);showDay[i].setEditable(false);center.add(showDay[i]);}}public void setCalendarMessage (CalendarMessage calendarMessage){ this.calendarMessage=calendarMessage;}public void showMonthCalendar(){String[] a=calendarMessage.getMonthCalendar();for(int i=0;i<42;i++)showDay[i].setText(a[i]);validate();}}CalendarMesssage类import java.util.Calendar;public class CalendarMessage {int year=-1,month=-1,day=-1;public int getYear(){return year;}public void setMonth(int month){if(month<=12&&month>=1)this.month=month;elsethis.month =1;}public int getMonth(){return month;}public void setDay(int day){this.day =day;}public int getDay(){return day ;}public String []getMonthCalendar(){String[] day=new String[42];Calendar rili =Calendar.getInstance();rili.set(year, month-1,1);int 星期几=rili.get(Calendar.DAY_OF_WEEK )-1;int dayAmount=0;if(month==1||month==3||month==5||month==7||month==8||month==10||month== 12)dayAmount=31;if(month==4||month==6||month==9||month==11)dayAmount=30;if(month==2)if(((year%4==0)&&(year%100!=0)||year%400==0))dayAmount=29;elsedayAmount=28;for(int i=0;i<星期几;i++)day[i]="";for(int i=星期几,n=1;i<星期几+dayAmount;i++){day[i]=String.valueOf(n);n++;}for(int i=星期几+dayAmount;i<42;i++)day[i]="";return day;}public void setYear(int year) {this.year = year;}}NotePad类import java.awt.*;import javax.swing.*;import javax.swing.border.Border;import javax.swing.event.ListSelectionEvent;import javax.swing.event.ListSelectionListener;import java.io.*;import java.awt.event.*;public class NotePad extends JPanel implements ActionListener { JTextArea text;JTextField showMessage;JPopupMenu menu;JMenuItem itemCopy, itemCut, itemPaste, itemClear, btn;public NotePad() {showMessage = new JTextField();showMessage.setHorizontalAlignment(JTextField.CENTER);showMessage.setFont(new Font("TimesRoman", Font.BOLD, 16));showMessage.setForeground(Color.blue);showMessage.setBackground(Color.pink);showMessage.setBorder(BorderFactory.createRaisedBevelBorder());showMessage.setEditable(false);menu = new JPopupMenu();itemCopy = new JMenuItem("复制");itemCut = new JMenuItem("剪切");itemPaste = new JMenuItem("粘贴");itemClear = new JMenuItem("清空");btn = new JMenuItem("字体");itemCopy.addActionListener(this);itemCut.addActionListener(this);itemPaste.addActionListener(this);itemClear.addActionListener(this);btn.addActionListener(this);menu.add(itemCopy);menu.add(itemCut);menu.add(itemPaste);menu.add(itemClear);menu.add(btn);text = new JTextArea(10, 10);text.addMouseListener(new MouseAdapter() {public void mousePressed(MouseEvent e) {if (e.getModifiers() == InputEvent.BUTTON3_MASK)menu.show(text, e.getX(), e.getY());}});setLayout(new BorderLayout());add(showMessage, BorderLayout.NORTH);add(new JScrollPane(text), BorderLayout.CENTER);}public void setShowMessage(int year, int month, int day) {showMessage.setText("" + year + "年" + month + "月" + day + "日");showMessage.setForeground(Color.blue);showMessage.setFont(new Font("宋体", Font.BOLD, 15));}public void save(File dir, int year, int month, int day) {String dailyContent = text.getText();String fileName = "" + year + "" + month + "" + day + ".txt";String key = "" + year + "" + month + "" + day;String[] dayFile = dir.list();boolean boo = false;for (int k = 0; k < dayFile.length; k++) {if (dayFile[k].startsWith(key)) {boo = true;break;}}if (boo) {String m = "" + year + "年" + month + "月" + day+ "已有日志,将新的内容添加到日志吗?";int ok = JOptionPane.showConfirmDialog(this, m, "",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);if (ok == JOptionPane.YES_OPTION) {try {File f = new File(dir, fileName);RandomAccessFile out = new RandomAccessFile(f, "rw");long fileEnd = out.length();byte[] bb = dailyContent.getBytes();out.seek(fileEnd);out.write(bb);out.close();} catch (IOException exp) {}}} else {String m = "" + year + "年" + month + "月" + day + "还没有日志,保存日志吗?";int ok = JOptionPane.showConfirmDialog(this, m, "询问",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);if (ok == JOptionPane.YES_OPTION) {try {File f = new File(dir, fileName);RandomAccessFile out = new RandomAccessFile(f, "rw");long fileEnd = out.length();byte[] bb = dailyContent.getBytes();out.seek(fileEnd);out.write(bb);out.close();} catch (IOException exp) {}}}}public void delete(File dir, int year, int month, int day) {String key = "" + year + "" + month + "" + day;String[] dayFile = dir.list();boolean boo = false;for (int k = 0; k < dayFile.length; k++) {if (dayFile[k].startsWith(key)) {boo = true;break;}}if (boo) {String m = "删除" + year + "年" + month + "月" + day + "日的日志吗?";int ok = JOptionPane.showConfirmDialog(this, m, "询问",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);if (ok == JOptionPane.YES_OPTION) {String fileName = "" + year + "" + month + "" + day + ".txt";File deleteFile = new File(dir, fileName);deleteFile.delete();}}else {String m = "" + year + "" + month + "" + day + "";JOptionPane.showMessageDialog(this, m, "提示",JOptionPane.WARNING_MESSAGE);}}public void read(File dir, int year, int month, int day) {String fileName = "" + year + "" + month + "" + day + ".txt";String key = "" + year + "" + month + "" + day;String[] dayFile = dir.list();boolean boo = false;for (int k = 0; k < dayFile.length; k++) {if (dayFile[k].startsWith(key)) {boo = true;break;}}if (boo) {String m = "" + year + "" + month + "" + day + "";int ok = JOptionPane.showConfirmDialog(this, m, "询问",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);if (ok == JOptionPane.YES_OPTION) {text.setText(null);try {File f = new File(dir, fileName);FileReader inOne = new FileReader(f);BufferedReader inTwo = new BufferedReader(inOne);String s = null;while ((s = inTwo.readLine()) != null)text.append(s + "\n");inOne.close();inTwo.close();} catch (IOException exp) {}}} else {String m = "" + year + "" + month + "" + day + "";JOptionPane.showMessageDialog(this, m, "提示",JOptionPane.WARNING_MESSAGE);}}public void actionPerformed(ActionEvent e) {if (e.getSource() == itemCopy)text.copy();else if (e.getSource() == itemCut)text.cut();else if (e.getSource() == itemPaste)text.paste();else if (e.getSource() == itemClear)text.setText(null);if (e.getSource() == btn) {JFontDialog nFD = new JFontDialog("选择字体");nFD.setModal(true);nFD.setVisible(true);text.setFont(nFD.myFont);}}}class JFontDialog extends JDialog {private static final long serialVersionUID = 1L;JList fontpolics, fontstyle, fontsize;JTextField fontpolict, fontstylet, fontsizet;String example;JLabel FontResolvent;JButton buttonok, buttoncancel;Font myFont;public JFontDialog(String title) {Container container = getContentPane();container.setLayout(new BorderLayout());JPanel panel = new JPanel();panel.setLayout(new GridLayout(2, 1));JPanel FontSet, FontView;FontSet = new JPanel(new GridLayout(1, 4));FontView = new JPanel(new GridLayout(1, 2));example = "AaBbCcDdEe";FontResolvent = new JLabel(example, JLabel.CENTER);FontResolvent.setBackground(Color.WHITE);ListSelectionListener selectionListener = new ListSelectionListener() { public void valueChanged(ListSelectionEvent e) {if (((JList) e.getSource()).getName().equals("polic")) {fontpolict.setText((String) fontpolics.getSelectedValue());FontResolvent.setFont(new Font(fontpolict.getText(),FontResolvent.getFont().getStyle(), FontResolvent.getFont().getSize()));}if (((JList) e.getSource()).getName().equals("style")) {fontstylet.setText((String) fontstyle.getSelectedValue());FontResolvent.setFont(new Font(FontResolvent.getFont().getFontName(), fontstyle.getSelectedIndex(),FontResolvent.getFont().getSize()));}if (((JList) e.getSource()).getName().equals("size")) {fontsizet.setText((String) fontsize.getSelectedValue());try {Integer.parseInt(fontsizet.getText());} catch (Exception excepInt) {fontsizet.setText(FontResolvent.getFont().getSize()+ "");}FontResolvent.setFont(new Font(FontResolvent.getFont().getFontName(), FontResolvent.getFont().getStyle(),Integer.parseInt(fontsizet.getText())));}}};KeyListener keyListener = new KeyListener() {public void keyPressed(KeyEvent e) {if (e.getKeyCode() == 10) {if (((JTextField) e.getSource()).getName().equals("polic")) {FontResolvent.setFont(new Font(fontpolict.getText(),FontResolvent.getFont().getStyle(),FontResolvent.getFont().getSize()));}if (((JTextField) e.getSource()).getName().equals("style")) {fontstylet.setText((String) fontstyle.getSelectedValue());FontResolvent.setFont(new Font(FontResolvent.getFont().getFontName(), fontstyle.getSelectedIndex(),FontResolvent.getFont().getSize()));}if (((JTextField) e.getSource()).getName().equals("size")) {try {Integer.parseInt(fontsizet.getText());} catch (Exception excepInt) {fontsizet.setText(FontResolvent.getFont().getSize()+ "");}FontResolvent.setFont(new Font(FontResolvent.getFont().getFontName(), FontResolvent.getFont().getStyle(), Integer.parseInt(fontsizet.getText())));}}}public void keyReleased(KeyEvent e) {}public void keyTyped(KeyEvent e) {}};// 字体JPanel Fontpolic = new JPanel();Border border = BorderFactory.createLoweredBevelBorder();border = BorderFactory.createTitledBorder(border, "字体");Fontpolic.setBorder(border);Font[] fonts = java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getAllFonts();int taille = fonts.length;String[] policnames = new String[taille];for (int i = 0; i < taille; i++) {policnames[i] = fonts[i].getName();}fontpolics = new JList(policnames);fontpolics.setName("polic");fontpolics.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); fontpolics.addListSelectionListener(selectionListener);fontpolics.setVisibleRowCount(6);fontpolict = new JTextField(policnames[0]);fontpolict.setName("polic");fontpolict.addKeyListener(keyListener);JScrollPane jspfontpolic = new JScrollPane(fontpolics);Fontpolic.setLayout(new BoxLayout(Fontpolic, BoxLayout.PAGE_AXIS)); Fontpolic.add(fontpolict);Fontpolic.add(jspfontpolic);// 样式JPanel Fontstyle = new JPanel();border = BorderFactory.createLoweredBevelBorder();border = BorderFactory.createTitledBorder(border, "样式");Fontstyle.setBorder(border);String[] styles = { "PLAIN", "BOLD", "ITALIC", "BOLD ITALIC" }; fontstyle = new JList(styles);fontstyle.setName("style");fontstyle.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); fontstyle.addListSelectionListener(selectionListener);fontstyle.setVisibleRowCount(6);fontstylet = new JTextField(styles[0]);fontstylet.setName("style");fontstylet.addKeyListener(keyListener);JScrollPane jspfontstyle = new JScrollPane(fontstyle);Fontstyle.setLayout(new BoxLayout(Fontstyle, BoxLayout.PAGE_AXIS)); Fontstyle.add(fontstylet);Fontstyle.add(jspfontstyle);// 大小JPanel Fontsize = new JPanel();border = BorderFactory.createLoweredBevelBorder();border = BorderFactory.createTitledBorder(border, "大小");Fontsize.setBorder(border);String[] sizes = { "10", "14", "18", "22", "26", "30" };fontsize = new JList(sizes);fontsize.setName("size");fontsize.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); fontsize.addListSelectionListener(selectionListener);fontsize.setVisibleRowCount(6);fontsizet = new JTextField(sizes[0]);fontsizet.setName("size");fontsizet.addKeyListener(keyListener);JScrollPane jspfontsize = new JScrollPane(fontsize);Fontsize.setLayout(new BoxLayout(Fontsize, BoxLayout.PAGE_AXIS)); Fontsize.add(fontsizet);Fontsize.add(jspfontsize);FontSet.add(Fontpolic);FontSet.add(Fontstyle);FontSet.add(Fontsize);FontView.add(FontResolvent);panel.add(FontSet);panel.add(FontView);JPanel panelnorth = new JPanel();panelnorth.setLayout(new FlowLayout());buttonok = new JButton("确定");buttoncancel = new JButton("取消");panelnorth.add(buttonok);panelnorth.add(buttoncancel);buttonok.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {myFont = FontResolvent.getFont();JFontDialog.this.setVisible(false);}});buttoncancel.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {JFontDialog.this.setVisible(false);}});container.add(panel, BorderLayout.CENTER);container.add(panelnorth, BorderLayout.SOUTH);setSize(400, 300);}}CalendarImage类import javax.swing.*;import java.io.*;import java.awt.*;public class CalendarImage extends JPanel{File imageFile;Image image;Toolkit tool;CalendarImage(){tool=getToolkit();}public void setImageFile(File f){imageFile=f;try{ image=tool.getImage(imageFile.toURI().toURL());}catch(Exception exp){}repaint();}public void paintComponent(Graphics g){super.paintComponent(g);int w=getBounds().width;int h=getBounds().height;g.drawImage(image, 0, 0, w, h, this);}}Clock类import java.applet.Applet;import java.applet.AudioClip;import java.awt.BasicStroke;import java.awt.Color;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.geom.Line2D;import java.io.File;import .MalformedURLException;import .URI;import .URL;import java.util.Date;import javax.swing.JPanel;public class Clock extends JPanel implements ActionListener { Date date;javax.swing.Timer secondTime;int hour,munite,second;Line2D secondLine,muniteLine,hourLine;Line2D m=new Line2D.Double(0,0,0,0);Line2D s=new Line2D.Double(0,0,0,0);int a,b,c,width,height;double pointSX[]=new double[60],pointSY[]=new double[60],pointMX[]=new double[60],pointMY[]=new double[60],pointHX[]=new double[60],pointHY[]=new double[60];Clock(){setBackground(Color.cyan);initPoint();secondTime=new javax.swing.Timer(1000,this);secondLine=new Line2D.Double(0,0,0,0);muniteLine=new Line2D.Double(0,0,0,0);hourLine=new Line2D.Double(0,0,0,0);secondTime.start();}private void initPoint(){width=getBounds().width;height=getBounds().height;pointSX[0]=0;pointSY[0]=-height/2*5/6;pointMX[0]=0;pointMY[0]=-(height/2*4/5);pointHX[0]=0;pointHY[0]=-(height/2*2/3);double angle=6*Math.PI/180;for(int i=0;i<59;i++){pointSX[i+1]=pointSX[i]*Math.cos(angle)-Math.sin(angle)*pointSY[i];pointSY[i+1]=pointSY[i]*Math.cos(angle)+pointSX[i]*Math.sin(angle); pointMX[i+1]=pointMX[i]*Math.cos(angle)-Math.sin(angle)*pointMY[i]; pointMY[i+1]=pointMY[i]*Math.cos(angle)+pointMX[i]*Math.sin(angle); pointHX[i+1]=pointHX[i]*Math.cos(angle)-Math.sin(angle)*pointHY[i]; pointHY[i+1]=pointHY[i]*Math.cos(angle)+pointHX[i]*Math.sin(angle);}for(int i=0;i<60;i++){pointSX[i]=pointSX[i]+width/2;pointSY[i]=pointSY[i]+height/2;pointMX[i]=pointMX[i]+width/2;pointMY[i]=pointMY[i]+height/2;pointHX[i]=pointHX[i]+width/2;pointHY[i]=pointHY[i]+height/2;}}public void paintComponent(Graphics g){super.paintComponent(g);initPoint();for(int i=0;i<60;i++){int m=(int)pointSX[i];int n=(int)pointSY[i];if(i%5==0){if(i==0||i==15||i==30||i==45){int k=10;g.setColor(Color.orange);g.fillOval(m-k/2, n-k/2, k, k);}else{int k=7;g.setColor(Color.orange );g.fillOval(m-k/2, n-k/2, k, k);}}else{int k=2;g.setColor(Color.black);g.fillOval(m-k/2, n-k/2, k, k);}}g.fillOval(width/2-5, height/2-5, 10, 10);Graphics2D g_2d=(Graphics2D)g;g_2d.setColor(Color.red);g_2d.draw(secondLine);BasicStroke bs=newBasicStroke(2f,BasicStroke.CAP_ROUND,BasicStroke.JOIN_MITER);g_2d.setStroke(bs);g_2d.setColor(Color.blue);g_2d.draw(muniteLine);bs=newBasicStroke(2f,BasicStroke.CAP_BUTT,BasicStroke.JOIN_MITER);g_2d.setStroke(bs);g_2d.setColor(Color.orange);g_2d.draw(hourLine);bs=new。

相关文档
最新文档