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

📄 timetableofyear.java

📁 小型的约会管理系统 对约会的时间地点事情进行记录与提醒
💻 JAVA
字号:
package s3063027030;
import java.util.*; 
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.*;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableCellRenderer;

import java.awt.*;
import java.awt.event.*;

public class TimetableOfYear extends JFrame{
	protected Calendar calendar=Calendar.getInstance();
	private JSpinner yearsSpinner=new JSpinner();
	protected ActivitiesOfYear activitiesOfYear;
	protected TreeMap<Integer,ActivitiesOfYear> totalActivities;
	protected HashMap<String,Activity> record=new HashMap<String,Activity>();
	private JButton detailButton=new JButton("查看详情");
	private JTextArea text=new JTextArea(5,25);
	private JPanel textPanel=new JPanel();
	protected JPanel controlPanel=new JPanel();
	protected JPanel buttonPanel=new JPanel();
	protected JPanel timePanel=new JPanel();
	protected JPanel containerPanel=new JPanel();
    private JLabel yearsLabel=new JLabel("Year: "); 
	protected DefaultListModel lItems=new DefaultListModel();
	protected JList lst=new JList(lItems);
	private JPanel lstPanel=new JPanel();
	
	private void initDetail(){
		detailButton.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				String secelected=(String)lst.getSelectedValue();
				if(secelected==null)return;
				Activity activity=record.get(secelected);
				text.setText("时间:"+activity.getYear()+"-"+activity.getMonth()+"-"+activity.getDate()+"\n" +
						"主题:"+activity.getTitle()+"\n"+"地点:"+activity.getLocation()+"\n"+"内容:"+activity.getDescription());
			}
		 });
		buttonPanel.setLayout(new FlowLayout());
		buttonPanel.add(detailButton);
		textPanel.setBorder(new TitledBorder("详情:"));
		textPanel.add(new JScrollPane(text));
		text.setBorder(new MatteBorder(2,2,0,0,Color.GRAY));
		controlPanel.setLayout(new BorderLayout());
		controlPanel.add(buttonPanel,BorderLayout.NORTH);
		controlPanel.add(textPanel,BorderLayout.CENTER);
		add(controlPanel,BorderLayout.CENTER);
	}
	public void activitiesList(){
		if(activitiesOfYear==null)return;
		for(Map.Entry<Integer,ActivitiesOfDaily> activities:activitiesOfYear.entrySet()){
			for(Map.Entry<Integer,Activity> entry:activities.getValue().entrySet()){
				Activity activity=entry.getValue();
				StringBuilder sb=new StringBuilder();
				sb.append(activity.getYear());
				sb.append("-");
				sb.append(activity.getMonth());
				sb.append("-");
				sb.append(activity.getDate());
				sb.append("  ");
				sb.append(activity.getHour());
				sb.append(" : ");
				sb.append(activity.getMinute());
				sb.append("    ");
				sb.append(activity.getTitle());
				String s=sb.toString();
				record.put(s,activity);
				lItems.addElement(s);
			}
		}
	}
	
	public TimetableOfYear(TreeMap<Integer,ActivitiesOfYear> totalActivities){
		this.totalActivities=totalActivities;
		setLayout(new BorderLayout());
		activitiesOfYear=totalActivities.get(calendar.get(Calendar.YEAR));
		init();
	}
	public void init(){
		Border brd=BorderFactory.createMatteBorder(1,1,2,3,Color.DARK_GRAY);
		lst.setBorder(brd);
		yearsSpinner.setEditor(new JSpinner.NumberEditor(yearsSpinner, "0000"));
        yearsSpinner.setValue(new Integer(calendar.get(Calendar.YEAR)));
        yearsSpinner.addChangeListener(new ChangeListener() { 
                public void stateChanged(ChangeEvent changeEvent) { 
                	int day = calendar.get(Calendar.DAY_OF_MONTH);
                    calendar.set(Calendar.YEAR, ((Integer) yearsSpinner.getValue()).intValue());
                    calendar.set(Calendar.DAY_OF_MONTH,1);
                    int maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
                    calendar.set(Calendar.DAY_OF_MONTH, day > maxDay ? maxDay : day);
                    activitiesOfYear=totalActivities.get(calendar.get(Calendar.YEAR));
                    lItems.removeAllElements();
                    activitiesList();
                } 
            });
        JPanel yearsPanel=new JPanel();
        yearsPanel.add(yearsLabel);
        yearsPanel.add(yearsSpinner);
        timePanel.setLayout(new FlowLayout());
        timePanel.add(yearsPanel);
        timePanel.setBorder(new MatteBorder(3,3,1,1,Color.lightGray));
        activitiesList();
        containerPanel.setBorder(new TitledBorder("安排"));
        lstPanel.add(new JScrollPane(lst));
        lstPanel.setBorder(new MatteBorder(3,3,0,0,Color.lightGray));
        containerPanel.setLayout(new BorderLayout(10,10));
        containerPanel.add(timePanel,BorderLayout.NORTH);
        containerPanel.add(lstPanel,BorderLayout.CENTER);
        add(containerPanel,BorderLayout.NORTH);
        initDetail();
	}
	public static void run(final JFrame f){
		SwingUtilities.invokeLater(new Runnable(){
			public void run(){
				f.setTitle("年安排");
				f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
				f.setSize(400, 480);
				f.setResizable(false);
				f.setVisible(true);
			}
		});
	}
	public static void main(String[] args){
		DateOrganizerSystem dateOrganizerSystem=new DateOrganizerSystem();
		ExecutorService exec=Executors.newCachedThreadPool();
		exec.execute(dateOrganizerSystem);
		DateOrganizerSystem.run(dateOrganizerSystem);
		exec.shutdown();
	}
}

⌨️ 快捷键说明

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