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

📄 calendar.java

📁 一个万年历代码
💻 JAVA
字号:
//1.MainFrame.java 
//--- 
import 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 = 1L; 
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; 
int 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(); 
} 
} 
//2.Clock.java 
//----- 
import 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; 



//显示时间的类:Clock 


/** *//** 
* Clock.java 
* Summary 数字时间显示 
* Created on 
* @author 
* remark 
*/ 

import java.awt.Canvas; 
import java.awt.Color; 
import java.awt.Font; 
import java.awt.Graphics; 
import java.text.SimpleDateFormat; 
import java.util.Calendar; 
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); 
} 
}

⌨️ 快捷键说明

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