栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java实现超级实用的日记本

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java实现超级实用的日记本

演示图

演示图

CalendarApp.java

package calenda;
 
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Locale;
 
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.Jframe;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.border.TitledBorder;
 
public class CalendarApp extends Jframe{
   
  private CalendarPanel calendarPanel=new CalendarPanel();
  private static JLabel jlblLearn=new JLabel("开始准备记单词");
  private String versionID="欢迎使用版本1.0.20150427";
  private JLabel jlblVersionID=new JLabel(versionID);
  private JButton jbtPrior=new JButton("←");
  private JButton jbtNext=new JButton("→");
  private JButton jbtDiary=new JButton("写日记");
  private JButton jbtScanDiary=new JButton("看日记");
  private static int year;
  public void init()
  {
    year=calendarPanel.getYear();
    calendarPanel.setBackground(Color.WHITE);
    
    JPanel jpButtons=new JPanel(new FlowLayout());
    //设置按钮背景色为白色
    jbtPrior.setBackground(Color.WHITE);
    jbtNext.setBackground(Color.WHITE);
    jbtDiary.setBackground(Color.WHITE);
    jbtScanDiary.setBackground(Color.WHITE);
    
    //一、后退按钮
    jbtPrior.addMouseListener(new MouseListener(){
 
      @Override
      public void mouseClicked(MouseEvent arg0) {
 // TODO Auto-generated method stub
  
      }
 
      @Override
      public void mouseEntered(MouseEvent arg0) {
 // TODO Auto-generated method stub
 jbtPrior.setForeground(Color.GREEN);
      }
 
      @Override
      public void mouseExited(MouseEvent arg0) {
 // TODO Auto-generated method stub
 jbtPrior.setForeground(Color.BLACK);
      }
 
      @Override
      public void mousePressed(MouseEvent arg0) {
 // TODO Auto-generated method stub
  
      }
 
      @Override
      public void mouseReleased(MouseEvent arg0) {
 // TODO Auto-generated method stub
  
      }

    });
    //二、前进按钮
 jbtNext.addMouseListener(new MouseListener(){
 
   @Override
   public void mouseClicked(MouseEvent arg0) {
     // TODO Auto-generated method stub
      
   }
 
   @Override
   public void mouseEntered(MouseEvent arg0) {
     // TODO Auto-generated method stub
     jbtNext.setForeground(Color.GREEN);
   }
 
   @Override
   public void mouseExited(MouseEvent arg0) {
     // TODO Auto-generated method stub
     jbtNext.setForeground(Color.BLACK);
   }
 
   @Override
   public void mousePressed(MouseEvent arg0) {
     // TODO Auto-generated method stub
      
   }
 
   @Override
   public void mouseReleased(MouseEvent arg0) {
     // TODO Auto-generated method stub
      
   }
    
 });
 //三、写日记按钮
 jbtDiary.addMouseListener(new MouseListener(){
 
   @Override
   public void mouseClicked(MouseEvent arg0) {
     // TODO Auto-generated method stub
      
   }
 
   @Override
   public void mouseEntered(MouseEvent arg0) {
     // TODO Auto-generated method stub
     jbtDiary.setForeground(Color.GREEN);
   }
 
   @Override
   public void mouseExited(MouseEvent arg0) {
     // TODO Auto-generated method stub
     jbtDiary.setForeground(Color.BLACK);
   }
 
   @Override
   public void mousePressed(MouseEvent arg0) {
     // TODO Auto-generated method stub
      
   }
 
   @Override
   public void mouseReleased(MouseEvent arg0) {
     // TODO Auto-generated method stub
      
   }
    
 });
 //四、看日记按钮
 jbtScanDiary.addMouseListener(new MouseListener(){
 
   @Override
   public void mouseClicked(MouseEvent arg0) {
     // TODO Auto-generated method stub
      
   }
 
   @Override
   public void mouseEntered(MouseEvent arg0) {
     // TODO Auto-generated method stub
     jbtScanDiary.setForeground(Color.GREEN);
   }
 
   @Override
   public void mouseExited(MouseEvent arg0) {
     // TODO Auto-generated method stub
     jbtScanDiary.setForeground(Color.BLACK);
   }
 
   @Override
   public void mousePressed(MouseEvent arg0) {
     // TODO Auto-generated method stub
      
   }
 
   @Override
   public void mouseReleased(MouseEvent arg0) {
     // TODO Auto-generated method stub
      
   }
    
 });
    jpButtons.add(jbtPrior);
    jpButtons.add(jbtNext);
    jpButtons.add(jbtDiary);
    jpButtons.add(jbtScanDiary);
    jpButtons.setBackground(Color.WHITE);
    
    JPanel jpCalendar=new JPanel(new BorderLayout());
    jpCalendar.add(calendarPanel,BorderLayout.CENTER);
    jpCalendar.add(jpButtons,BorderLayout.SOUTH);
     
    
    JPanel jpLearn=new JPanel(new FlowLayout());
    jpLearn.setBorder(new TitledBorder("开心背单词"));
    jpLearn.add(jlblLearn);
    jpLearn.setBackground(Color.WHITE);
    
    JPanel jpVersionID=new JPanel(new FlowLayout());
    Font font=new Font("宋体",Font.PLAIN,4);
    jpVersionID.setFont(font);
    jpVersionID.add(jlblVersionID);
    jpVersionID.setBackground(Color.WHITE);
    
    JPanel jpBelow=new JPanel(new BorderLayout(2,1));
    jpBelow.add(jpLearn,BorderLayout.CENTER);
    jpBelow.add(jpVersionID,BorderLayout.SOUTH);
     
    this.add(jpCalendar,BorderLayout.CENTER);
    this.add(jpBelow,BorderLayout.SOUTH);
    this.setBackground(Color.WHITE);
    this.setSize(700, 500);
    this.setLocationRelativeTo(null);
    this.setTitle("多功能日历");
    this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    this.setVisible(true);
     
    jbtScanDiary.addActionListener(new ActionListener()
    {
      @Override
      public void actionPerformed(ActionEvent e) {
   new Thread(new thread_scanDiary()).start();
      }
    });
    jbtDiary.addActionListener(new ActionListener()
    {
 
      @Override
      public void actionPerformed(ActionEvent e) {
 //获取本地系统时间
 SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");//设置日期格式
 String time=df.format(new Date());
 new Thread(new thread_keepDiary(time)).start();
      }
    });
     
     
     
    jbtPrior.addActionListener(new ActionListener()
    {
      @Override
      public void actionPerformed(ActionEvent e) {
 // TODO Auto-generated method stub
 int currentMonth=calendarPanel.getMonth();
 if(currentMonth==0)
 {
   calendarPanel.setYear(year);
   year--;
 }
 calendarPanel.setMonth((currentMonth-1)%12);
      }
    });
     
    jbtNext.addActionListener(new ActionListener()
    {
 
      @Override
      public void actionPerformed(ActionEvent e) {
 // TODO Auto-generated method stub
 int currentMonth=calendarPanel.getMonth();
 if(currentMonth==11)
 {
   calendarPanel.setYear(++year);
 }
 calendarPanel.setMonth((currentMonth+1)%12);
      }
    });
  }
   
 
  public static void main(String[] args) throws InterruptedException {
    // TODO Auto-generated method stub
    SwingUtilities.invokeLater(new Runnable(){
      @Override
      public void run() {
 // TODO Auto-generated method stub
 new CalendarApp().init();
 new Thread(new thread_showEnglish(jlblLearn)).start();
      }
    });
  }
   
 
}

CalendarPanel.java


package calenda;
 
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.text.DateFormatSymbols;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Locale;
 
import javax.swing.*;
import javax.swing.border.LineBorder;
 
public class CalendarPanel extends JPanel {
  
  private static final long serialVersionUID = 1L;
  private JLabel jlblHeader=new JLabel(" ",JLabel.CENTER);
  private JLabel[] jlblDay=new JLabel[49];
  private Calendar calendar=new GregorianCalendar();
  private int year0=calendar.get(Calendar.YEAR);
  private int month0=calendar.get(Calendar.MONTH);
  private int day0=calendar.get(Calendar.DAY_OF_MONTH);
  private int month;
  private int year;
  private int day;
  private JPanel jpDays=new JPanel(new GridLayout(0,7));
  Font font1=new Font("宋体",Font.ITALIC,20);
  Font font2=new Font("宋体",Font.BOLD,26);
  Font font3=new Font("宋体",Font.BOLD,30);
  public CalendarPanel()
  {
    //设置日历头部件以及日期标签的背景色为白色
    jlblHeader.setBackground(Color.WHITE);
    jpDays.setBackground(Color.WHITE);
    //声明每个标签
    for(int i=0;i<49;i++)
    {
      jlblDay[i]=new JLabel();
      jlblDay[i].setBorder(new LineBorder(Color.LIGHT_GRAY,1));
      jlblDay[i].setHorizontalAlignment(JLabel.RIGHT);
      jlblDay[i].setVerticalAlignment(JLabel.TOP);
    }
    calendar=new GregorianCalendar();
    month=calendar.get(Calendar.MONTH);
    year=calendar.get(Calendar.YEAR);
    day=calendar.get(Calendar.DATE);
    //更新日历
    updateCalendar();
    showHeader();
    showDays();
    //添加到主面板
    this.setLayout(new BorderLayout());
    this.add(jlblHeader, BorderLayout.NORTH);
    this.add(jpDays, BorderLayout.CENTER);
  }
  private void showHeader()
  {
    SimpleDateFormat sdf=new SimpleDateFormat("MMMM yyyy",Locale.CHINA);
    String header=sdf.format(calendar.getTime());
    jlblHeader.setText(header);
    jlblHeader.setForeground(Color.BLUE);
    jlblHeader.setFont(font3);
  }
  private void showDayNames()
  {
    DateFormatSymbols dfs=new DateFormatSymbols(Locale.CHINA);
    String dayNames[]=dfs.getWeekdays();
    for(int i=0;i<7;i++)
    {
      jlblDay[i].setText(dayNames[i+1]);
      jlblDay[i].setForeground(Color.BLUE);
      jlblDay[i].setHorizontalAlignment(JLabel.CENTER);
      jlblDay[i].setFont(font2);
      jpDays.add(jlblDay[i]);
    }
  }
  public void showDays()
  {
    jpDays.removeAll();
    showDayNames();
    int startingDayOfMonth=calendar.get(Calendar.DAY_OF_WEEK);
    Calendar cloneCalendar=(Calendar)calendar.clone();
    cloneCalendar.add(Calendar.DATE, -1);
    int daysInPrecedingMonth=cloneCalendar.getActualMaximum(Calendar.DAY_OF_MONTH);
    for(int i=0;i

Diary.java


package calenda;
 
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
 
import javax.swing.JOptionPane;
 
public class Diary implements Serializable {
 
  
  //私有变量
  private String filename;
  private String theme;
  private String content;
  //含参构造方法
  public Diary(String filename,String theme,String content)
  {
    if(theme.length()==0)
    {
      JOptionPane.showMessageDialog(null, "无论心情如何,总得有个主题吧!");
    }
    else if(content.length()==0)
    {
      JOptionPane.showMessageDialog(null, "把开心的不开心的都尽情写下吧!");
    }
    else
    {
      File CalendarDiaryFile=new File("C:/Calendar/Diary");
      if(!CalendarDiaryFile.exists())
      {
 CalendarDiaryFile.mkdirs();
      }
    this.filename="C:/Calendar/Diary/"+filename+".dat";
    this.theme=theme;
    this.content=content;
    }
  }
  public void write() throws Exception
  {
    File file=new File(filename);
    FileOutputStream fos = new FileOutputStream(file);
    ObjectOutputStream oos = new ObjectOutputStream(fos);
    oos.writeObject(this);
    oos.close();
  }
  public Diary read() throws Exception
  {
    File file=new File(filename);
    FileInputStream fis=new FileInputStream(file);
    ObjectInputStream ois = new ObjectInputStream(fis);
    Diary d=(Diary) ois.readObject();
    ois.close();
    return d;
  }
  
  public String getTheme()
  {
    return this.theme;
  }
  public String getContent()
  {
    return this.content;
  }
  
}

thread_keepDiary.java


package calenda;
 
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.nio.file.Files;
 
import javax.swing.*;
 
public class thread_keepDiary extends Jframe implements Runnable {
 
  private Jframe jf=this;
  private Jtextarea jta=new Jtextarea();
  private JButton jbtSave=new JButton("保存");
  private JLabel jlblTitle=new JLabel("主题");
  private JTextField jtfTitle=new JTextField(16);
  private String id;
  public thread_keepDiary(String time)
  {
     
    JPanel jpTitle=new JPanel();
    jpTitle.setLayout(new BorderLayout());
    jpTitle.add(jlblTitle, BorderLayout.WEST);
    jpTitle.add(jtfTitle,BorderLayout.CENTER);
    jta.setLineWrap(true);
    jta.setWrapStyleWord(true);
    JScrollPane jsp=new JScrollPane(jta);
    jsp.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
    this.id=time;
    jbtSave.addActionListener(new ActionListener()
    {
      @Override
      public void actionPerformed(ActionEvent arg0) {
 // TODO Auto-generated method stub
  
 String theme=jtfTitle.getText().trim();
 String content=jta.getText();
  
 Diary d_today=new Diary(id,theme,content);
 try
 {
   d_today.write();
   JOptionPane.showMessageDialog(null, "保存成功!");
   jf.dispose();
 }
 catch(Exception e)
 {
   e.printStackTrace();
 }
      }
    });
    this.setTitle("备忘录"+id);
    this.add(jsp,BorderLayout.CENTER);
    this.add(jpTitle, BorderLayout.NORTH);
    this.add(jbtSave, BorderLayout.SOUTH);
    this.setSize(500,500);
    this.setLocationRelativeTo(null);
    this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
     
  }
  @Override
  public void run() {
    this.setVisible(true);
  }
 
}

thread_mottoSparkle.java

package calenda;
 
import javax.swing.JLabel;
 
public class thread_mottoSparkle implements Runnable{
  private JLabel jlbl;
  public thread_mottoSparkle(JLabel jlbl)
  {
    this.jlbl=jlbl;
  }
  @Override
  public void run() {
    String content=jlbl.getText();
    int L=content.length();
    int index=0;
    while(true)
    {
      jlbl.setText(content.substring(0, index));
      try
      {
 Thread.sleep(250);
      }
      catch(Exception ex)
      {
 ex.printStackTrace();
      }
      index++;
      if(index==(L+1))
 index=0;
    }
  }
 
}

thread_scanDiary.java


package calenda;
 
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.ObjectInputStream;
 
import javax.swing.*;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.JTableHeader;
 
public class thread_scanDiary extends Jframe implements Runnable{
  
  private static final long serialVersionUID = 1L;
  //日历数据库存放路径
  private String path="C:/Calendar/Diary";
  //日历总个数
  private static int num;
  //声明日历文件
  private File file;
  private File[] Diary;
  //声明JTable模型
  private JTable jtable;
  //声明格言面板及标签及内容等
  private JPanel jpMotto=new JPanel();
  private JLabel jlblMotto=new JLabel();
  private Font font=new Font("宋体",Font.ITALIC,20);
  private String wish="唯有专注,才能让自己成功。";
  //增加弹出式菜单2015-4-26
  private JPopupMenu jPopupMenu1=new JPopupMenu();
  //声明菜单
  private JMenuItem jmiScan=new JMenuItem("查看");
  private JMenuItem jmiDelete=new JMenuItem("删除");
  private JMenuItem jmiComment=new JMenuItem("评论");
  @Override
  public void run() {
    //尝试弹出式菜单增加子菜单
    jmiScan.setForeground(Color.RED);
    jmiDelete.setForeground(Color.RED);
    jmiComment.setForeground(Color.RED);
    jPopupMenu1.add(jmiScan);
    jPopupMenu1.addSeparator();
    jPopupMenu1.add(jmiDelete);
    jPopupMenu1.addSeparator();
    jPopupMenu1.add(jmiComment);
    
    file = new File(path);
    Diary=file.listFiles();
    num=Diary.length;
    String[] head={"  时间  ","   主题   "};
    Object[][] diary=new Object[num][2];
    for(int i=0;i=0)
 {
   int index=jtable.getSelectedRow();
   String filename="C:/Calendar/Diary/"+Diary[index].getName();
   File file=new File(filename);
   try
   {
     FileInputStream fis=new FileInputStream(file);
     ObjectInputStream ois = new ObjectInputStream(fis);
     Diary d=(Diary) ois.readObject();
     ois.close();
     Jframe jf=new Jframe();
     Jtextarea jta=new Jtextarea();
     JLabel jlblTitle=new JLabel("主题");
     JTextField jtfTitle=new JTextField(16);
     JPanel jpTitle=new JPanel();
     jpTitle.setLayout(new BorderLayout());
     jpTitle.add(jlblTitle, BorderLayout.WEST);
     jpTitle.add(jtfTitle,BorderLayout.CENTER);
     jta.setLineWrap(true);
     jta.setWrapStyleWord(true);
     JScrollPane jsp=new JScrollPane(jta);
     jsp.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
     jtfTitle.setText(d.getTheme());
     jta.setText(d.getContent());
     jtfTitle.setEditable(false);
     jta.setEditable(false);
     jf.setTitle("日记 "+Diary[index].getName().replaceFirst(".dat",  ""));
     jf.add(jsp,BorderLayout.CENTER);
     jf.add(jpTitle, BorderLayout.NORTH);
     jf.setSize(400,400);
     jf.setLocationRelativeTo(null);
     jf.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
     jf.setVisible(true);
   }
   catch(Exception ex)
   {
     ex.printStackTrace();
   }
 }
 else
 {
   JOptionPane.showMessageDialog(null, "请先选中一个日记!");
 }
      }
    });
    //删除菜单
    jmiDelete.addActionListener(new ActionListener(){
      @Override
      public void actionPerformed(ActionEvent e) {
 if(jtable.getSelectedRow()>=0)
 {
   int index=jtable.getSelectedRow();
   String filename="C:/Calendar/Diary/"+Diary[index].getName();
   File file=new File(filename);
   int option=JOptionPane.showConfirmDialog(null, "你确定要删除日记"+Diary[index].getName()+"?"); 
    if(option==JOptionPane.YES_OPTION)
    {
      file.delete();
      tableModel.removeRow(index);
     SwingUtilities.updateComponentTreeUI(jtable);
     JOptionPane.showMessageDialog(null, "删除成功!");
    }
    else
    {
    }
 }
 else
 {
   JOptionPane.showMessageDialog(null, "请先选中一个日记!");
 }
      }

    });
    
    this.add(jsp,BorderLayout.CENTER);
    this.add(jpMotto, BorderLayout.SOUTH);
    this.setSize(600, 500);
    this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
    this.setLocationRelativeTo(null);
    this.setTitle("日记列表");
    this.setVisible(true);
    new Thread(new thread_mottoSparkle(jlblMotto)).start();
  }
}

thread_showEnglish.java

package calenda;
 
import java.awt.Color;
import java.awt.Font;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.LineNumberReader;
import java.security.SecureRandom;
import java.util.Random;
 
import javax.swing.JLabel;
 
public class thread_showEnglish implements Runnable {
  private static JLabel jlbl=new JLabel();
  Font font=new Font("���ו",Font.BOLD,18);
  public thread_showEnglish(JLabel jlbl)
  {
    this.jlbl=jlbl;
    jlbl.setForeground(Color.MAGENTA);
    jlbl.setFont(font);
  }
  @Override
  public void run() {
    // TODO Auto-generated method stub
    int count=0;
    try
    {
      String file="C:/Calendar/Learning/english_word.txt";
      BufferedReader input = new BufferedReader(new FileReader(file));
      while(input.readLine()!=null)
      {
 count++;
      }
      input.close();
      int[] word = new int[count];
      SecureRandom random = new SecureRandom();
      for(int i=0;i

以上所述就是本文的全部内容了,希望大家能够喜欢。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/151634.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号