当前位置:
文档之家› JAVA万年历课程设计实训报告
JAVA万年历课程设计实训报告
1
开始算起,把第一天的星期数字减去 1 后即为此天在该序列中的序号,从此天开
始算,利用该序列的序号对 6 取余得 0 换行,即可完整的输出该月的日历。
(5)在选择项中加入 showMessageDialog 的问题:在本程序中,首先定义了
关于“版本说明”的适配器,在这个类中定义了这个选择项的 actionPerformed 方
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 窗 口关闭函数
this.getContentPane().setLayout(new BorderLayout(10,0));
jta.setLineWrap(true);//获取文本区的换行策略。如果设置为
dtm
=
new
DefaultTableModel(null,astr);
private JTable table = new JTable(dtm);
//装
日期的表格
private JScrollPane sp = new JScrollPane(table);
private JButton bLastYear = new JButton("上一年"); private JButton bNextYear = new JButton("下一年"); private JButton bLastMonth = new JButton("上月"); private JButton bNextMonth = new JButton("下月");
时这一天背景黑色
table.setSelectionForeground(Color.YELLOW);//选定的日期字
体是黄色的
table.setBackground(new Color(200,255,255));//日期显 示 表
格颜色
table.setFont(new Font("黑体",Font.BOLD,24));//日期数字字
体格式
table.setRowHeight(30);//表格的高度
table.addMouseListener(this);
//鼠标监听器
jtfYear.addActionListener(this);//可输入年份的文本框 //为各个按钮添加监听函数 bAdd.addActionListener(this); bDel.addActionListener(this); bLastYear.addActionListener(this); bNextYear.addActionListener(this);
private JTextField jtfYear = new JTextField(5);//jtfYear 年份 显示和输入文本框,允许编辑单行文本
private JTextField jtfMonth = new JTextField(2);//jtfMonth 月 份显示文本框
private JPanel p1 = new JPanel();
(2)所选月份天数的算法:用 if 语句实现。一三五七八十二月份为 31 天, 四六九十一月份为 30 天,对于二月份进行闰年与非闰年的讨论。
(3)所选月份第一天为星期几的算法:使用 get(Calendar.DAY_OF_WEEK) 函数实现。
(4)输出所选月份该月日历的算法:算出所选月份第一天为星期几后,把该 日期以前的位置用空格补上,并从该日起一次输出天数直到月底。从前面的空格
2
import javax.swing.JTextArea; import javax.swing.JTextField; import javax.swing.table.DefaultTableModel;
public class wannianli extends JFrame implements ActionListener,
//装入控制日期
按钮的模块
private JPanel p2 = new JPanel();
private JPanel p3 = new JPanel(new BorderLayout());
private JPanel p4 = new JPanel(new GridLayout(2,1));
private JPanel p5 = new JPanel(new BorderLayout());
true,则当行的长度大于所分配的宽度时,将换行。如果设置为 false,则始终
不换行。
table.setGridColor(Color.BLACK); //星期之间的网格线是
黑色的
table.setColumnSelectionAllowed(true);
table.setSelectionBackground(Color.BLACK);//当选 定某 一天
口、可选的垂直和水平滚动条以及可选的行和列标题视口
JTextArea(); //管理视
private JLabel l = new JLabel("小提示:可直接输入年份,提高查 询效率!");
private JLabel lt = new JLabel();//系统时间
3
private JLabel ld = new JLabel();//日期是否被选择 private int lastTime; JMenuBar jmb = new JMenuBar(); JMenu view;
public wannianli() {
super("万年历"); //框架命名 view = new JMenu("关于"); JMenuItem banben = new JMenuItem("版本说明"); banben.addActionListener(new banben_actionAdapter(this)); view.add(banben); jmb.add(view); this.setJMenuBar(jmb);
import javax.swing.Icon; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable;
MouseListener
{
private Calendar cld = Calendar.getInstance();
private String [] astr = {"星期一", "星期二", "星期三", "星期
四", "星期五", "星期六", "星期日"};
private
DefaultTableModel
成绩:
本科专业实训报告
课题名称:java万年历设计 院系专业:信息工程学院通信工程专业 学号姓名:0967119104 李少华 指导教师:赵建峰 完成日期:2012年6月 28 日星期 四
报告正文
一、简介
(1)选题依据:本次课程设计为自选题。思考一段时间后,我决定做一个万 年历的设计。主要考虑到自己 JAVA 课程基础内容掌握并不是很扎实。而而对于 设计一个万年历程序,由于其功能简单设计也相对较易,并且通过设计这样的一 个日历小组件,也能使自己对 JAVA 的一些基础知识掌握的更加牢固。
private JButton bAdd = new JButton("保存日志"); private JButton bDel = new JButton("删除日志");
private
JTextArea
jta
=
new
//JTextArea 是一个显示纯文本的多行区域
private JScrollPane jsp = new JScrollPane(jta);
p3.add(jsp, BorderLayout.CENTER); p3.add(p2, BorderLayout.SOUTH); p3.add(ld, BorderLayout.NORTH); p4.add(l); p4.add(lt); p5.add(p4, BorderLayout.SOUTH); p5.add(sp, BorderLayout.CENTER); p5.add(p1, BorderLayout.NORTH);
法。其次,在主程序中为“版本说明”选择项加一个监听器,监听器中调用了刚
才定义的适配器。最后,同样在主程序中详细说明 actionPerformed 方法。
四、数据分析
package wannianli; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; //import java.sql.Date; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date;