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

📄 millionyear.java

📁 java写的一个万年历程序
💻 JAVA
字号:
package millionyear;
//:MillionYear.java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class MillionYear extends JPanel implements ItemListener
{
	final private String WEEK[] = {"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
	final private String LunarMonth[] = {"正月","二月","三月","四月","五月","六月","七月","八月","九月","十月","11月","12月"};
	final private String LunarDate[] = {"初二","初三","初四","初五","初六","初七","初八","初九","初十","十一","十二","十三",
	"十四","十五","十六","十七","十八","十九","廿十","廿一","廿二","廿三","廿四","廿五","廿六","廿七","廿八","廿九","三十"};
	final private int UNIT_HEIGHT = 30;
	final private int UNIT_WIDTH = 60;
	
	private Solar solar;
	private int selectedYear;
	private int selectedMonth;
	private int daysOfMonth;
	private int weekOfFirstDay;
	
	private Lunar lunar;
	
	private JPanel top;
	private JComboBox jcb1;
	private JComboBox jcb2;
	private JTable table;
	private String tableValue = new String("");
	
	MillionYear()
	{
		solar          = new Solar();
		selectedYear   = solar.todayYear;
		selectedMonth  = solar.todayMonth;
		daysOfMonth    = solar.getDaysOfMonth(selectedYear,selectedMonth);
		weekOfFirstDay = solar.getWeekOfFirstDay(selectedYear,selectedMonth);
		
		
		top = new JPanel(new FlowLayout(FlowLayout.CENTER));
		String yearItems[]  = new String[50];
		String monthItems[] = {"1 月","2 月","3 月","4 月","5 月","6 月","7 月","8 月","9 月","10 月","11 月","12 月"};
         	for(int i=0;i<50;i++){yearItems[i]= Integer.toString(i+2001)+" 年";}
         	jcb1 = new JComboBox(yearItems);
         	jcb2 = new JComboBox(monthItems);
         	jcb1.setSelectedIndex(selectedYear - 2001);
         	jcb2.setSelectedIndex(selectedMonth - 1);
         	jcb1.addItemListener(this);
         	jcb2.addItemListener(this);
         	top.add(jcb1);
         	top.add(jcb2);
		
		table = new JTable(7,7);
		table.setPreferredSize(new Dimension(UNIT_WIDTH * 7, UNIT_HEIGHT * 7));
		table.setRowHeight(UNIT_HEIGHT);
		for(int i=0; i<WEEK.length; i++)
			table.setValueAt(WEEK[i],0,i);
		showNew();
		table.setEnabled(false);
		
		setLayout(new BorderLayout());
		add(top, BorderLayout.NORTH);
		add(table, BorderLayout.CENTER);
	 }
	 
	 private void showNew()
	 {
	        for(int row=1; row<7; row++)
	       		for(int col=0; col<7; col++)table.setValueAt("",row, col);
		int row = 1;
		int col = weekOfFirstDay;
		//boolean newMonth = true;//每月的第一天显示应在LunarMonth[]中提取
		
		int tempSolarCalendarDate = 1;//当前阳历为1
		lunar = new Lunar(selectedYear - 1900, selectedMonth,tempSolarCalendarDate);
		lunar.get_solar_day_date();lunar.get_lunar_day();
		int tempLunarCalendarTotalDays = lunar.calendar_calculate_lunar_month_total_day();//tempSolarCalenDate对应的农历月天数    
		int k = lunar.gc_lunar_calendar_date;//当前阳历号对应的阴历号
		String temp = new String("  ");//用于对齐
		try
		{
		      for(int i=1; i<=daysOfMonth; i++) 
		      {
			   if(k==1)
			   {    
			   	if(i<10)tableValue = temp + Integer.toString(i) + "    " +LunarMonth[lunar.gc_lunar_calendar_month - 1];
			   	else    tableValue = Integer.toString(i) + "    " +LunarMonth[lunar.gc_lunar_calendar_month - 1];
			   }
			   else
			   {
			   	if(i<10)tableValue = temp + Integer.toString(i) + "    " +LunarDate[k-2];
			   	else    tableValue = Integer.toString(i) + "    " +LunarDate[k-2];
			   }
			   k++;
			   if(k>tempLunarCalendarTotalDays)
			   //新的一个农历月份 
			   {    tempSolarCalendarDate = i + 1;//(此时的阳历为新农历月的第一天)
			   	lunar = new Lunar(selectedYear - 1900, selectedMonth,tempSolarCalendarDate);
			   	lunar.get_solar_day_date();lunar.get_lunar_day();
			   	tempLunarCalendarTotalDays = lunar.calendar_calculate_lunar_month_total_day();
			   	k=1;
			   }
			   table.setValueAt(tableValue,row,col);
			   col++;
			   if(col>6){col=0;row++;}
		      }
		   }catch(Exception e){e.printStackTrace();}
		repaint();
	 }
	 
	 public void update(Graphics g)
	 {
	       super.paint(g);
	 }
	 public void itemStateChanged(ItemEvent e)
	 {
	 	if(e.getSource().equals(jcb1))
	 	{
	 		selectedYear   = jcb1.getSelectedIndex() + 2001;
	 		daysOfMonth    = solar.getDaysOfMonth(selectedYear,selectedMonth);
		        weekOfFirstDay = solar.getWeekOfFirstDay(selectedYear,selectedMonth);
	 		showNew();
	 	}
	 	else
	 	{
	 		selectedMonth  = jcb2.getSelectedIndex() + 1;
	 		daysOfMonth    = solar.getDaysOfMonth(selectedYear,selectedMonth);
		        weekOfFirstDay = solar.getWeekOfFirstDay(selectedYear,selectedMonth);
	 		showNew();
	 	}
	 }

         public static void main(String[] args)
	 {
		JFrame jf = new JFrame("Welcome-万年历");
		jf.getContentPane().setLayout(new BorderLayout());
		jf.getContentPane().add(new MillionYear());
		jf.pack();
		jf.setVisible(true);
		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	 }
}///:~

⌨️ 快捷键说明

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