Calendar1这个id的元素是不是存在
是不是引入了日历的js插件
日历的插件很多,你可以看一下bootstrap-datepicker。比较容易上手。
应为要有交互,选择了Js来实现,也算是结对编程
的初试吧。
我将显示部分用html
写好,点击的按钮触发事件函数是check();
复制代码
代码如下:
function
onCheck(){
var
Year
=
document.getElementById("year").value
//获取文本框的“年”
var
theYear
=Year
*
1
//转换为number类型
//alert(theYear)
//
获取月值
var
month
=
document.getElementById("month")
var
index1=month.selectedIndex
var
theMonth
=
month.options[index1].value
//获取月值
var
day
=
document.getElementById("day")
var
index2=day.selectedIndex
var
theDay
=
day.options[index2].value
//
输入值判断部分
...
//调用核心函数
days(theYear,theMonth,theDay)
}
MainFrame.java是显示日历程序,Clock.java是日历计算程序(可以不要)。
编译后运行MainFrame这个类即可。
swing窗口显示万年历,jdk1.4以上环境编译运行。
package org.testimport java.awt.BorderLayout
import java.awt.Color
import java.awt.GridLayout
import java.awt.Toolkit
import java.awt.event.ActionEvent
import java.awt.event.ActionListener
import java.sql.Date
import java.util.Calendar
import javax.swing.JComboBox
import javax.swing.JFrame
import javax.swing.JLabel
import javax.swing.JPanel
public class MainFrame extends JFrame {
private static final long serialVersionUID = -306484324260972141L
JPanel panel = new JPanel(new BorderLayout())
JPanel panel1 = new JPanel()
JPanel panel2 = new JPanel(new GridLayout(7, 7))
JPanel panel3 = new JPanel()
JLabel[] label = new JLabel[49]
JLabel y_label = new JLabel("年份")
JLabel m_label = new JLabel("月份")
JComboBox com1 = new JComboBox()
JComboBox com2 = new JComboBox()
int re_year, re_month, x_size, y_size
String year_num
Calendar now = Calendar.getInstance() // 实例化Calendar
MainFrame() {
super("万年历")
setSize(300, 350)
x_size = (int) (Toolkit.getDefaultToolkit().getScreenSize().getWidth())
y_size = (int) (Toolkit.getDefaultToolkit().getScreenSize().getHeight())
setLocation((x_size - 300) / 2, (y_size - 350) / 2)
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
panel1.add(y_label)
panel1.add(com1)
panel1.add(m_label)
panel1.add(com2)
for (int i = 0 i < 49 i++) {
label[i] = new JLabel("", JLabel.CENTER)// 将显示的字符设置为居中
panel2.add(label[i])
}
panel3.add(new Clock(this))
panel.add(panel1, BorderLayout.NORTH)
panel.add(panel2, BorderLayout.CENTER)
panel.add(panel3, BorderLayout.SOUTH)
panel.setBackground(Color.white)
panel1.setBackground(Color.white)
panel2.setBackground(Color.white)
panel3.setBackground(Color.white)
Init()
com1.addActionListener(new ClockAction())
com2.addActionListener(new ClockAction())
setContentPane(panel)
setVisible(true)
setResizable(false)
}
class ClockAction implements ActionListener {
public void actionPerformed(ActionEvent arg0) {
int c_year, c_month, c_week
c_year = Integer.parseInt(com1.getSelectedItem().toString()) // 得到当前所选年份
c_month = Integer.parseInt(com2.getSelectedItem().toString()) - 1 // 得到当前月份,并减1,计算机中的月为0-11
c_week = use(c_year, c_month) // 调用函数use,得到星期几
Resetday(c_week, c_year, c_month) // 调用函数Resetday
}
}
public void Init() {
int year, month_num, first_day_num
String log[] = { "日", "一", "二", "三", "四", "五", "六" }
for (int i = 0 i < 7 i++) {
label[i].setText(log[i])
}
for (int i = 0 i < 49 i = i + 7) {
label[i].setForeground(Color.red) // 将星期日的日期设置为红色
}
for (int i = 6 i < 49 i = i + 7) {
label[i].setForeground(Color.green)// 将星期六的日期设置为绿色
}
for (int i = 1 i < 10000 i++) {
com1.addItem("" + i)
}
for (int i = 1 i < 13 i++) {
com2.addItem("" + i)
}
month_num = (int) (now.get(Calendar.MONTH)) // 得到当前时间的月份
year = (int) (now.get(Calendar.YEAR)) // 得到当前时间的年份
com1.setSelectedIndex(year - 1) // 设置下拉列表显示为当前年
com2.setSelectedIndex(month_num) // 设置下拉列表显示为当前月
first_day_num = use(year, month_num)
Resetday(first_day_num, year, month_num)
}
public int use(int reyear, int remonth) {
int week_num
now.set(reyear, remonth, 1) // 设置时间为所要查询的年月的第一天
week_num = (int) (now.get(Calendar.DAY_OF_WEEK))// 得到第一天的星期
return week_num
}
@SuppressWarnings("deprecation")
public void Resetday(int week_log, int year_log, int month_log) {
int month_day_score // 存储月份的天数
int count
month_day_score = 0
count = 1
Date date = new Date(year_log, month_log + 1, 1) // now
Calendar cal = Calendar.getInstance()
cal.setTime(date)
cal.add(Calendar.MONTH, -1) // 前个月
month_day_score = cal.getActualMaximum(Calendar.DAY_OF_MONTH)// 最后一天
for (int i = 7 i < 49 i++) { // 初始化标签
label[i].setText("")
}
week_log = week_log + 6 // 将星期数加6,使显示正确
month_day_score = month_day_score + week_log
for (int i = week_log i < month_day_score i++, count++) {
label[i].setText(count + "")
}
}
public static void main(String[] args) {
JFrame.setDefaultLookAndFeelDecorated(true)
new MainFrame()
}
} package org.test
import java.awt.Color
import java.util.Calendar
import java.awt.Canvas
import java.awt.Font
import java.awt.Graphics
import java.text.SimpleDateFormat
public class Clock extends Canvas implements Runnable{
private static final long serialVersionUID = 3660124045489727166L
MainFrame mf
Thread t
String time
public Clock(MainFrame mf){
this.mf=mf
setSize(280,40)
setBackground(Color.white)
t=new Thread(this)//实例化线程
t.start()
//调用线程
}
public void run(){
while(true){
try{
Thread.sleep(1000)//休眠1秒钟
}catch(InterruptedException e){
System.out.println("异常")
}
this.repaint(100)
}
}
public void paint(Graphics g){
Font f=new Font("宋体",Font.BOLD,16)
SimpleDateFormat SDF=new SimpleDateFormat("yyyy'年'MM'月'dd'日'HH:mm:ss")//格式化时间显示类型
Calendar now=Calendar.getInstance()
time=SDF.format(now.getTime()) //得到当前日期和时间
g.setFont(f)
g.setColor(Color.orange)
g.drawString(time,45,25)
}
}