Java实现超级实用的日记本

网友投稿 244 2023-08-02


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 ufNFUbidjrCalendarApp 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,ufNFUbidjr -1);

int daysInPrecedingMonth=cloneCalendar.getActualMaximum(Calendar.DAY_OF_MONTH);

for(int i=0;i

{

jlblDay[i+7].setForeground(Color.LIGHT_GRAY);

jlblDay[i+7].setHorizontalAlignment(JLabel.CENTER);

jlblDay[i+7].setText(daysInPrecedingMonth-startingDayOfMonth+2+i+"");

jlblDay[i+7].setFont(font1);

jpDays.add(jlblDay[i+7]);

}

int daysInCurrentMonth=calendar.getActualMaximum(Calendar.DAY_OF_MONTH);

for(int i=1;i<=daysInCurrentMonth;i++)

{

if(i==day0&&year==year0&&month==month0)

{

jlblDay[i-2+startingDayOfMonth+7].setForeground(Color.red);

jlblDay[i-2+startingDayOfMonth+7].setHorizontalAlignment(JLabel.CENTER);

jlblDay[i-2+startingDayOfMonth+7].setText(i+"");

jlblDay[i-2+startingDayOfMonth+7].setFont(font2);

jpDays.add(jlblDay[i-2+startingDayOfMonth+7]);

}

else

{

jlblDay[i-2+startingDayOfMonth+7].setForeground(Color.darkGray);

jlblDay[i-2+startingDayOfMonth+7].setHorizontalAlignment(JLabel.CENTER);

jlblDay[i-2+startingDayOfMonth+7].setText(i+"");

jlblDay[i-2+startingDayOfMonth+7].setFont(font1);

jpDays.add(jlblDay[i-2+startingDayOfMonth+7]);

}

}

int j=1;

for(int i=daysInCurrentMonth-1+startingDayOfMonth+7;i%7!=0;i++)

{

jlblDay[i].setForeground(Color.LIGHT_GRAY);

jlblDay[i].setHorizontalAlignment(JLabel.CENTER);

jlblDay[i].setText(j++ +"");

jlblDay[i].setFont(font1);

jpDays.add(jlblDay[i]);

}

jpDays.repaint();

}

public void updateCalendar()

{

calendar.set(Calendar.YEAR, year);

calendar.set(Calendar.MONTH, month);

calendar.set(Calendar.DATE, 1);

month=calendar.get(Calendar.MONTH);

year=calendar.get(Calendar.YEAR);

day=calendar.get(Calendar.DATE);

}

public int getMonth()

{

return month;

}

public int getYear()

{

return year;

}

public void setMonth(int month)

{

this.month=month;

updateCalendar();

showHeader();

showDays();

}

public void setYear(int year)

{

this.year=year;

updateCalendar();

showHeader();

showDays();

}

}

Diary.java

/**

* 本程序为日记类

* 最后修改日期为2015-4-27

*/

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;

}

/**

* 变量get()方法

* @return

*/

public String getTheme()

{

return this.theme;

}

public String getContent()

{

return this.content;

}

/**

* 变量set()方法

* @param comment

*/

}

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 voiufNFUbidjrd 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

{

try{

String time=Diary[i].getName().replaceFirst(".dat", "");

FileInputStream fis=new FileInputStream(Diary[i]);

ObjectInputStream ois = new ObjectInputStream(fis);

Diary d=(Diary) ois.readObject();

ois.close();

String theme=d.getTheme();

diary[i][0]=time;

diary[i][1]=theme;

}

catch(Exception ex)

{

ex.printStackTrace();

}

}

/**

* 格言面板取

*/

jlblMotto.setText(wish);

jlblMotto.setFont(font);

jlblMotto.setForeground(Color.RED);

jpMotto.add(jlblMotto);

jpMotto.setBackground(Color.WHITE);

/**

* 日历列表面板区

*/

final DefaultTableModel tableModel=new DefaultTableModel(diary,head);

jtable=new JTable(tableModel);

jtable.setBackground(Color.WHITE);

jtable.setRowHeight(30);

jtable.setDoubleBuffered(false);

jtable.setComponentPopupMenu(jPopupMenu1);

jtable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

DefaultTableCellRenderer tcr = new DefaultTableCellRenderer();// 设置table内容居中

tcr.setHorizontalAlignment(SwingConstants.CENTER);// 这句和上句作用一样

jtable.setDefaultRenderer(Object.class, tcr);

JScrollPane jsp=new JScrollPane(jtable);

/**

* 弹出式菜单事件监听器编写

*/

//查看菜单

jmiScan.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);

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

{

word[i]=random.nextInt(count);

}

int index=0;

Thread.sleep(1000);

while(true)

{

BufferedReader input1 = new BufferedReader(new FileReader(file));

String content="";

int line=0;

while((content=input1.readLine())!=null)

{

if(line==word[index])

{

jlbl.setText(content);

}

line++;

}

if(index==count-1)

index=0;

else

index++;

Thread.sleep(3500);

}

}

catch(Exception ex)

{

ex.printStackTrace();

}

}

}

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

{

jlblDay[i+7].setForeground(Color.LIGHT_GRAY);

jlblDay[i+7].setHorizontalAlignment(JLabel.CENTER);

jlblDay[i+7].setText(daysInPrecedingMonth-startingDayOfMonth+2+i+"");

jlblDay[i+7].setFont(font1);

jpDays.add(jlblDay[i+7]);

}

int daysInCurrentMonth=calendar.getActualMaximum(Calendar.DAY_OF_MONTH);

for(int i=1;i<=daysInCurrentMonth;i++)

{

if(i==day0&&year==year0&&month==month0)

{

jlblDay[i-2+startingDayOfMonth+7].setForeground(Color.red);

jlblDay[i-2+startingDayOfMonth+7].setHorizontalAlignment(JLabel.CENTER);

jlblDay[i-2+startingDayOfMonth+7].setText(i+"");

jlblDay[i-2+startingDayOfMonth+7].setFont(font2);

jpDays.add(jlblDay[i-2+startingDayOfMonth+7]);

}

else

{

jlblDay[i-2+startingDayOfMonth+7].setForeground(Color.darkGray);

jlblDay[i-2+startingDayOfMonth+7].setHorizontalAlignment(JLabel.CENTER);

jlblDay[i-2+startingDayOfMonth+7].setText(i+"");

jlblDay[i-2+startingDayOfMonth+7].setFont(font1);

jpDays.add(jlblDay[i-2+startingDayOfMonth+7]);

}

}

int j=1;

for(int i=daysInCurrentMonth-1+startingDayOfMonth+7;i%7!=0;i++)

{

jlblDay[i].setForeground(Color.LIGHT_GRAY);

jlblDay[i].setHorizontalAlignment(JLabel.CENTER);

jlblDay[i].setText(j++ +"");

jlblDay[i].setFont(font1);

jpDays.add(jlblDay[i]);

}

jpDays.repaint();

}

public void updateCalendar()

{

calendar.set(Calendar.YEAR, year);

calendar.set(Calendar.MONTH, month);

calendar.set(Calendar.DATE, 1);

month=calendar.get(Calendar.MONTH);

year=calendar.get(Calendar.YEAR);

day=calendar.get(Calendar.DATE);

}

public int getMonth()

{

return month;

}

public int getYear()

{

return year;

}

public void setMonth(int month)

{

this.month=month;

updateCalendar();

showHeader();

showDays();

}

public void setYear(int year)

{

this.year=year;

updateCalendar();

showHeader();

showDays();

}

}

Diary.java

/**

* 本程序为日记类

* 最后修改日期为2015-4-27

*/

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;

}

/**

* 变量get()方法

* @return

*/

public String getTheme()

{

return this.theme;

}

public String getContent()

{

return this.content;

}

/**

* 变量set()方法

* @param comment

*/

}

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 voiufNFUbidjrd 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

{

try{

String time=Diary[i].getName().replaceFirst(".dat", "");

FileInputStream fis=new FileInputStream(Diary[i]);

ObjectInputStream ois = new ObjectInputStream(fis);

Diary d=(Diary) ois.readObject();

ois.close();

String theme=d.getTheme();

diary[i][0]=time;

diary[i][1]=theme;

}

catch(Exception ex)

{

ex.printStackTrace();

}

}

/**

* 格言面板取

*/

jlblMotto.setText(wish);

jlblMotto.setFont(font);

jlblMotto.setForeground(Color.RED);

jpMotto.add(jlblMotto);

jpMotto.setBackground(Color.WHITE);

/**

* 日历列表面板区

*/

final DefaultTableModel tableModel=new DefaultTableModel(diary,head);

jtable=new JTable(tableModel);

jtable.setBackground(Color.WHITE);

jtable.setRowHeight(30);

jtable.setDoubleBuffered(false);

jtable.setComponentPopupMenu(jPopupMenu1);

jtable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

DefaultTableCellRenderer tcr = new DefaultTableCellRenderer();// 设置table内容居中

tcr.setHorizontalAlignment(SwingConstants.CENTER);// 这句和上句作用一样

jtable.setDefaultRenderer(Object.class, tcr);

JScrollPane jsp=new JScrollPane(jtable);

/**

* 弹出式菜单事件监听器编写

*/

//查看菜单

jmiScan.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);

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

{

word[i]=random.nextInt(count);

}

int index=0;

Thread.sleep(1000);

while(true)

{

BufferedReader input1 = new BufferedReader(new FileReader(file));

String content="";

int line=0;

while((content=input1.readLine())!=null)

{

if(line==word[index])

{

jlbl.setText(content);

}

line++;

}

if(index==count-1)

index=0;

else

index++;

Thread.sleep(3500);

}

}

catch(Exception ex)

{

ex.printStackTrace();

}

}

}

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

{

try{

String time=Diary[i].getName().replaceFirst(".dat", "");

FileInputStream fis=new FileInputStream(Diary[i]);

ObjectInputStream ois = new ObjectInputStream(fis);

Diary d=(Diary) ois.readObject();

ois.close();

String theme=d.getTheme();

diary[i][0]=time;

diary[i][1]=theme;

}

catch(Exception ex)

{

ex.printStackTrace();

}

}

/**

* 格言面板取

*/

jlblMotto.setText(wish);

jlblMotto.setFont(font);

jlblMotto.setForeground(Color.RED);

jpMotto.add(jlblMotto);

jpMotto.setBackground(Color.WHITE);

/**

* 日历列表面板区

*/

final DefaultTableModel tableModel=new DefaultTableModel(diary,head);

jtable=new JTable(tableModel);

jtable.setBackground(Color.WHITE);

jtable.setRowHeight(30);

jtable.setDoubleBuffered(false);

jtable.setComponentPopupMenu(jPopupMenu1);

jtable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

DefaultTableCellRenderer tcr = new DefaultTableCellRenderer();// 设置table内容居中

tcr.setHorizontalAlignment(SwingConstants.CENTER);// 这句和上句作用一样

jtable.setDefaultRenderer(Object.class, tcr);

JScrollPane jsp=new JScrollPane(jtable);

/**

* 弹出式菜单事件监听器编写

*/

//查看菜单

jmiScan.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);

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

{

word[i]=random.nextInt(count);

}

int index=0;

Thread.sleep(1000);

while(true)

{

BufferedReader input1 = new BufferedReader(new FileReader(file));

String content="";

int line=0;

while((content=input1.readLine())!=null)

{

if(line==word[index])

{

jlbl.setText(content);

}

line++;

}

if(index==count-1)

index=0;

else

index++;

Thread.sleep(3500);

}

}

catch(Exception ex)

{

ex.printStackTrace();

}

}

}

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

{

word[i]=random.nextInt(count);

}

int index=0;

Thread.sleep(1000);

while(true)

{

BufferedReader input1 = new BufferedReader(new FileReader(file));

String content="";

int line=0;

while((content=input1.readLine())!=null)

{

if(line==word[index])

{

jlbl.setText(content);

}

line++;

}

if(index==count-1)

index=0;

else

index++;

Thread.sleep(3500);

}

}

catch(Exception ex)

{

ex.printStackTrace();

}

}

}

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


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:解析Java继承中方法的覆盖和重载
下一篇:浅谈下拉菜单中的Option对象
相关文章

 发表评论

暂时没有评论,来抢沙发吧~