📄 millionyear.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 + -