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

📄 mycalendar.java

📁 带有备忘录功能的日历
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* * MyCalendar.java * 由于时间关系,部分代码未能加上注释,敬请谅解 * 或者可以加我QQ:229159701,大家可以做学习交流,我是个对JAVA有浓厚兴趣的人 * 希望我们能够成为学习上和生活上的好朋友 *  * 程序里面每10秒对备忘录做一次检查,备忘录保存路径为d:/Calendar_Memo/Memo.BOX * 保存时未对内容加密,原本是打算采用数据库保存,但由于时间关系没有实现 * E-mail:h20020654@126.com * Created on 2008年5月21日, 下午2:08 */package calendar;import java.awt.Color;import java.awt.Toolkit;import java.awt.event.ActionEvent;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import javax.swing.JOptionPane;import javax.swing.JSpinner;import javax.swing.JTable;import javax.swing.ListSelectionModel;import javax.swing.UIManager;import javax.swing.event.ChangeEvent;import javax.swing.event.ChangeListener;import javax.swing.table.AbstractTableModel;import javax.swing.table.DefaultTableModel;/** * * @author  啊正 */public class MyCalendar extends javax.swing.JFrame implements Runnable {    Calendar calendar;    private int count = 10;    private String today = "";    private String finalToday = "";    private SimpleDateFormat sdfDate = new SimpleDateFormat("yyyy-MM-dd");    private Date now = new Date();    /** Creates new form MyCalendar */    public MyCalendar() {        initComponents();        finalToday = sdfDate.format(now);        setTable();        setDate();        updateTable();        new Thread(this).start();    }    public void setTable() {        //设置此表是否始终大到足以填充封闭视口的高度        tabDays.setFillsViewportHeight(true);        //返回此 JTable 所使用的 tableHeader 并设置其背景颜色为浅灰色        tabDays.getTableHeader().setBackground(Color.lightGray);        //设置此表是否允许同时存在行选择和列选择        tabDays.setCellSelectionEnabled(true);        //将表的选择模式设置为只允许单个选择        tabDays.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);    }    public void setDate() {        //使用默认时区和语言环境获得一个日历        calendar = Calendar.getInstance();        //更改显示 SpinnerModel 当前值的 JComponent,这里为JSpinner,其模型为 SpinnerNumberModel 的 JSpinner 编辑器,初始值为0000        spYear.setEditor(new JSpinner.NumberEditor(spYear, "0000"));        //设置spYear的当前值为当前年年份        spYear.setValue(calendar.get(Calendar.YEAR));        //添加侦听器(每次模型更改时)        spYear.addChangeListener(new ChangeListener() {            public void stateChanged(ChangeEvent arg0) {                //当前具体日期(日子)                int day = calendar.get(Calendar.DAY_OF_MONTH);                //设置月份                calendar.set(Calendar.DAY_OF_MONTH, 1);                //设置日历年份为spYear中选择的数值                calendar.set(Calendar.YEAR, ((Integer) spYear.getValue()).intValue());                //得到某年某月的日子的最大值                int maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);                //判断当前日子和选择某年某月后的日子大小情况                calendar.set(Calendar.DAY_OF_MONTH, day > maxDay ? maxDay : day);                //更新表格显示                updateTable();            }        });        //设置cboMonths的当前值为当前月份        cboMonths.setSelectedIndex(calendar.get(Calendar.MONTH));        //添加侦听器(每次点击时)        cboMonths.addActionListener(new java.awt.event.ActionListener() {            public void actionPerformed(ActionEvent e) {                int day = calendar.get(Calendar.DAY_OF_MONTH);                calendar.set(Calendar.DAY_OF_MONTH, 1);                //设置日历月份为cboMonths中选择的数值                calendar.set(Calendar.MONTH, cboMonths.getSelectedIndex());                int maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);                calendar.set(Calendar.DAY_OF_MONTH, day > maxDay ? maxDay : day);                updateTable();            }        });    }    public void updateTable() {        final String[] week = {"日", "一", "二", "三",            "四", "五", "六"        };        AbstractTableModel tableModel = new DefaultTableModel() {            @Override            public int getRowCount() {                return 6;            }            @Override            public int getColumnCount() {                return 7;            }            @Override            public String getColumnName(int column) {                return week[column];            }            @Override            public Object getValueAt(int row, int column) {                Calendar calendar = (Calendar) MyCalendar.this.calendar.clone();                calendar.set(Calendar.DAY_OF_MONTH, 1);                int dayCount = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);                int moreDayCount = calendar.get(Calendar.DAY_OF_WEEK) - 1;                int index = row * 7 + column;                int dayIndex = index - moreDayCount + 1;                if (index < moreDayCount || dayIndex > dayCount) {                    return null;                } else {                    return new Integer(dayIndex);                }            }            @Override            public boolean isCellEditable(int rowIndex, int columnIndex) {                System.out.println("------" + (rowIndex + 1) + "行" + (columnIndex + 1) + "列------");                return false;            }        };        if (tabDays == null) {            tabDays = new JTable();        }        tableModel.fireTableDataChanged();        tabDays.setModel(tableModel);        int day = calendar.get(Calendar.DAY_OF_MONTH);        for (int i = 0; i < tabDays.getRowCount(); i++) {            for (int j = 0; j < tabDays.getColumnCount(); j++) {                if (tabDays.getValueAt(i, j) != null && tabDays.getValueAt(i, j).toString().equals(day + "")) {                    tabDays.setRowSelectionInterval(i, i);                    tabDays.setColumnSelectionInterval(j, j);                }            }        }        if (((calendar.get(Calendar.MONTH) + 1) + "").length() == 1) {            today = calendar.get(Calendar.YEAR) + "-" + 0 + (calendar.get(Calendar.MONTH) + 1) + "-" + calendar.get(Calendar.DAY_OF_MONTH);        } else {            today = calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1) + "-" + calendar.get(Calendar.DAY_OF_MONTH);        }        new  CheckMemo(today).start();        setLunar();    }    public void run() {        while (true) {            Date nowTime = new Date();            SimpleDateFormat sdfTime = new SimpleDateFormat("HH点mm分ss秒");            labTime.setText(sdfTime.format(nowTime));            if (count == 10) {                new CheckMemo(today);            }            try {                Thread.sleep(1000);                if (count == 10) {                    count = 0;                } else {                    count++;                }            } catch (Exception e) {            }        }    }    /** This method is called from within the constructor to     * initialize the form.     * WARNING: Do NOT modify this code. The content of this method is     * always regenerated by the Form Editor.     */    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents    private void initComponents() {        pm = new javax.swing.JPopupMenu();        miWriteDayMemo = new javax.swing.JMenuItem();        contentPane = new javax.swing.JPanel();        labYear = new javax.swing.JLabel();        spYear = new javax.swing.JSpinner();        cboMonths = new javax.swing.JComboBox();        spTab = new javax.swing.JScrollPane();        tabDays = new javax.swing.JTable();        labCount = new javax.swing.JLabel();        labAllCount = new javax.swing.JLabel();        labTime = new javax.swing.JLabel();        panLunar = new javax.swing.JPanel();        labLunar = new javax.swing.JLabel();        mb = new javax.swing.JMenuBar();        mMemo = new javax.swing.JMenu();        miThatDayMemo = new javax.swing.JMenuItem();        miAllMemo = new javax.swing.JMenuItem();        sep = new javax.swing.JSeparator();        miWriteMemo = new javax.swing.JMenuItem();        mHelp = new javax.swing.JMenu();        miHelp = new javax.swing.JMenuItem();        miAbout = new javax.swing.JMenuItem();        miWriteDayMemo.setText("写该天备忘录");        miWriteDayMemo.addActionListener(new java.awt.event.ActionListener() {            public void actionPerformed(java.awt.event.ActionEvent evt) {                miWriteDayMemoActionPerformed(evt);            }        });        pm.add(miWriteDayMemo);        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);        setTitle("日历");        setIconImage(Toolkit.getDefaultToolkit().createImage(getClass().getResource("/calendar/today.png")));        setResizable(false);        contentPane.setBackground(new java.awt.Color(204, 204, 255));        labYear.setText("年");        spYear.setEditor(new javax.swing.JSpinner.NumberEditor(spYear, "2008"));        cboMonths.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月" }));        spTab.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(0, 0, 0), 1, true));        tabDays.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED));        tabDays.setComponentPopupMenu(pm);        tabDays.setModel(new javax.swing.table.DefaultTableModel(            new Object [][] {                {null, null, null, null, null, null, null},                {null, null, null, null, null, null, null},                {null, null, null, null, null, null, null},                {null, null, null, null, null, null, null},                {null, null, null, null, null, null, null},                {null, null, null, null, null, null, null}            },            new String [] {                "日", "一", "二", "三", "四", "五", "六"            }        ) {            boolean[] canEdit = new boolean [] {                false, false, false, false, false, false, false            };            public boolean isCellEditable(int rowIndex, int columnIndex) {                return canEdit [columnIndex];            }        });        tabDays.setToolTipText("选中后右击可编写该天备忘录");        tabDays.setSelectionBackground(new java.awt.Color(0, 0, 255));        tabDays.getTableHeader().setResizingAllowed(false);        tabDays.getTableHeader().setReorderingAllowed(false);        tabDays.addMouseListener(new java.awt.event.MouseAdapter() {            public void mouseClicked(java.awt.event.MouseEvent evt) {                tabDaysMouseClicked(evt);            }        });        spTab.setViewportView(tabDays);        labCount.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING);        labCount.setText("<html><div align='center'><font color='black'>该天备忘录:</font><font color='red'>0个</font></div></html>");        labCount.setToolTipText("双击我");        labCount.addMouseListener(new java.awt.event.MouseAdapter() {            public void mouseClicked(java.awt.event.MouseEvent evt) {                labCountMouseClicked(evt);            }        });        labAllCount.setForeground(new java.awt.Color(255, 0, 0));        labAllCount.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);        labAllCount.setText("<html><div align='center'><font color='black'>全部备忘录:</font><font color='red'>0个</font></div></html>");        labAllCount.setToolTipText("双击我");        labAllCount.addMouseListener(new java.awt.event.MouseAdapter() {

⌨️ 快捷键说明

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