Java使用图形用户界面万年历
使用图形用户界面。实现日期与星期的查询
9、万年历
要求:
使用图形用户界面。
实现日期与星期的查询
import java.awt.*;
import java.awt.event.*;
import java.text.*;
import java.util.*;
import javax.swing.*;
import javax.swing.table.*;
public classextends JFrame implements ActionListener
{
private Calendar cal= Calendar.getInstance();
private String [] str = {"星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"};
private DefaultTableModel dtm = new DefaultTableModel(null,str);
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("下月");
private JTextField Year = new JTextField(4);//jtfYear年份显示和输入文本 private JLabel jla=new JLabel("年");
private JTextField month = new JTextField(4);
private JLabel jla1=new JLabel("月");
private JTextField jtfMonth = new JTextField(2);//jtfMonth月份显示文本框 private JPanel p1 = new JPanel(); //装入控制日期按钮的模块 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());
private JLabel l = new JLabel("文本框中可直接键入要查找的年份,以提高查询效率");
private JLabel lt = new JLabel();
private int lastTime;
public test1()
{
super("万年历"); //框架命名
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//窗口关闭函数 this.getContentPane().setLayout(new BorderLayout(10, 0));
table.setGridColor(Color.GRAY); //星期之间的网格线是灰色的
使用图形用户界面。实现日期与星期的查询
table.setColumnSelectionAllowed(true);
table.setSelectionBackground(Color.BLACK);//当选定某一天时这一天背景黑色
table.setSelectionForeground(Color.GREEN);//选定的日期字体是绿色的 table.setBackground(new Color(184,207,229));//日期显示表格颜色浅蓝色 table.setFont(new Font("黑体",Font.BOLD,24));//日期数字字体格式 table.setRowHeight(30);//表格的高度
Year.addActionListener(this);//可输入年份的文本框
month.addActionListener(this);//可输入年份的文本框
//为各个按钮添加监听函数
bLastYear.addActionListener(this);
bNextYear.addActionListener(this);
bLastMonth.addActionListener(this);
bNextMonth.addActionListener(this);
//将按钮添加到上
p1.add(bLastYear);
p1.add(Year);//年份输入文本框
p1.add(jla);
p1.add(month);//年份输入文本框
p1.add(jla1);
p1.add(bNextYear);
p1.add(bLastMonth);
p1.add(jtfMonth);
p1.add(bNextMonth);
p3.add(p2, BorderLayout.SOUTH);
p4.add(l);
p4.add(lt);
p5.add(p4, BorderLayout.SOUTH);
p5.add(sp, BorderLayout.CENTER);
p5.add(p1, BorderLayout.NORTH);
this.getContentPane().add(p5, BorderLayout.CENTER);
this.getContentPane().add(p3, BorderLayout.EAST);
String [] strDate = DateFormat.getDateInstance().format(new
Date()).split("-");//获得日期
cal.set(Integer.parseInt(strDate[0]), Integer.parseInt(strDate[1])-1, 0);
showCalendar(Integer.parseInt(strDate[0]),
Integer.parseInt(strDate[1]), cal);
jtfMonth.setEditable(false);//设置月份的文本框为不可编辑
Year.setText(strDate[0]);
使用图形用户界面。实现日期与星期的查询
month.setText(strDate[1]);
jtfMonth.setText(strDate[1]);
new Timer(lt).start();
this.setBounds(200,200,600,320);
this.setResizable(false);
this.setVisible(true);
}
public void showCalendar(int localYear, int localMonth, Calendar cld) {
int Days = getDaysOfMonth(localYear, localMonth) +
cld.get(Calendar.DAY_OF_WEEK) - 2;
Object [] ai = new Object[7];
lastTime = 0;
for (int i = cld.get(Calendar.DAY_OF_WEEK)-1; i <= Days; i++) {
ai[i%7] = String.valueOf(i-(cld.get(Calendar.DAY_OF_WEEK)-2)); if (i%7 == 6)
{
dtm.addRow(ai);
ai = new Object[7];
lastTime++;
}
}
dtm.addRow(ai);
}
public int getDaysOfMonth(int year, int Month) //显示所选月份的天数 {
if(Month == 1 || Month == 3 || Month == 5 || Month == 7 || Month == 8 || Month == 10 || Month == 12)
{
return 31;
}
if(Month == 4 || Month == 6 || Month == 9 || Month == 11)
{
return 30;
}
if(year%4 == 0 && year%100 != 0 || year%400 == 0)//闰年
{
return 29;
}
else
{
使用图形用户界面。实现日期与星期的查询
return 28;
}
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource() == Year || e.getSource() == bLastYear || e.getSource() == bNextYear ||
e.getSource() == bLastMonth || e.getSource() == bNextMonth) {
int m, y;
try//控制输入的年份正确,异常控制
{
if (Year.getText().length() != 4)
{
throw new NumberFormatException();
}
y = Integer.parseInt(Year.getText());
m = Integer.parseInt(jtfMonth.getText());
}
catch (NumberFormatException ex)
{
JOptionPane.showMessageDialog(this, "请输入4位0-9的数字!", "年份有误", JOptionPane.ERROR_MESSAGE);
return;
}
for (int i = 0; i < lastTime+1; i++){ dtm.removeRow(0);}
if(e.getSource() ==
bLastYear){ Year.setT …… 此处隐藏:3769字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [行业范文]美好的法语句子
- [行业范文]描写露珠的句子
- [行业范文]精彩禅语句子图片
- [行业范文]关于满嘴谎言的句子
- [行业范文]关于安静的句子48句
- [行业范文]关于小河的句子
- [行业范文]描写稻田的句子
- [行业范文]思念好朋友的句子
- [行业范文]赞美雪的句子
- [行业范文]早上激励人心的句子
- [行业范文]失恋忧伤的句子
- [行业范文]努力积极向上的句子
- [行业范文]对工作心灰意冷的句子
- [行业范文]失恋让人心疼的句子
- [行业范文]描写珍惜青春的句子
- [行业范文]表达思念的句子简短
- [行业范文]关于父爱的句子范例
- [行业范文]浪漫的英语句子
- [行业范文]关于周末的句子
- [行业范文]思念牵挂的句子
- 有关感恩班会课件简短(二篇)(感恩班会
- 2025年初二下乡军训心得体会800字(15篇
- 关于新员工培训方案汇编(关于新员工培
- 精选高考生寒假学习计划书(精)(高考生
- 毕业实训报告心得体会(3篇)(实训报告心
- 银行工作感悟及心得范文怎么写(四篇)(
- 精选领导干部个人政治画像报告通用(七
- 精选超市11.11活动促销方案(精品超市品
- 2025年怎么做自我介绍汇总(5篇)(至2025
- 最新企业错峰生产方案(26篇)(山西企业
- 最新暑期三下乡社会实践调研报告范本(
- 最新幼儿园大班教育教学总结怎么写(最
- 最新教师节主持词小学(优秀9篇)(教师节
- 关于小学安全教育教学方案(推荐)(关于
- 员工信模板范文怎么写(五篇)(员工信息
- 最新保险销售离职申请书(十六篇)(最新
- 最新XX小学防校园欺凌工作方案怎么写(2
- 有关特岗教师辞职信范文(推荐)(特岗教
- 精选党的建设工作要点简短(党的建设的
- 如何写安康杯竞赛活动总结汇总(4篇)(安




