📄 daypanel.java
字号:
package calendar;
import java.awt.Color;
import javax.swing.*;
public class DayPanel extends JPanel {
//定义日历中用到的35个标签
private DayLabel day1;
private DayLabel day2;
private DayLabel day3;
private DayLabel day4;
private DayLabel day5;
private DayLabel day6;
private DayLabel day7;
private DayLabel day8;
private DayLabel day9;
private DayLabel day10;
private DayLabel day11;
private DayLabel day12;
private DayLabel day13;
private DayLabel day14;
private DayLabel day15;
private DayLabel day16;
private DayLabel day17;
private DayLabel day18;
private DayLabel day19;
private DayLabel day20;
private DayLabel day21;
private DayLabel day22;
private DayLabel day23;
private DayLabel day24;
private DayLabel day25;
private DayLabel day26;
private DayLabel day27;
private DayLabel day28;
private DayLabel day29;
private DayLabel day30;
private DayLabel day31;
private DayLabel day32;
private DayLabel day33;
private DayLabel day34;
private DayLabel day35;
private static DayLabel CurrentSelection=null;
public DayPanel()
{
init();
UpdateCalendar();
addMouseListener();
dayPanelLayout();
}
/**
* 根据标签名设置标签的背景色
* @param lable
*/
public void setBackGround(String lable)
{
for(int i=1;i<=35;i++)
{
DayLabel temp=getLabel("day"+i);
if(temp.getText().trim().equals(lable))
{
temp.setBackground(new Color(153, 255, 0));
DayPanel.setCurrentSeletion(temp);
break;
}
}
}
/**
* 根据标签名除去标签背景色
* @param lable
*/
public void clearBackGround(String lable) {
for(int i=1;i<=35;i++)
{
DayLabel temp=getLabel("day"+i);
if(temp.getText().trim().equals(lable))
{
temp.setBackground(null);
break;
}
}
}
/**
* 更新日历的显示
*/
public void UpdateCalendar() {
int year=MyCalendar.time.getYear();
int month=MyCalendar.time.getMonth();
int day=MyCalendar.time.getDay();
int firstDayOfWeek=MyCalendar.time.getFirstDayOfMonth();
clearBackGround(Integer.toString(day));
int days=0;
int i;
days = getDaysOfMonth(year, month, days);
for(i=1;i<firstDayOfWeek;i++)
this.getLabel("day"+i).setText("");
for(i=0;i<days;i++)
{
if(firstDayOfWeek<=35)
this.getLabel("day"+firstDayOfWeek++).setText(Integer.toString(i+1));
else
break;
}
if(i==days && firstDayOfWeek<=35)
{
for(i=firstDayOfWeek;i<=35;i++)
this.getLabel("day"+i).setText("");
}
if(i!=days)
{
int left=days-i;
for(int j=0,k=1;j<left;j++,i++)
{
this.getLabel("day"+k++).setText(Integer.toString(i+1));
}
}
setBackGround(Integer.toString(MyCalendar.time.getDay()));
}
/**
* 根据标签名称得到相应的标签
* @param label
* @return
*/
private DayLabel getLabel(String label)
{
if(label.equalsIgnoreCase("day1"))
return day1;
else if(label.equalsIgnoreCase("day2"))
return day2;
else if(label.equalsIgnoreCase("day3"))
return day3;
else if(label.equalsIgnoreCase("day4"))
return day4;
else if(label.equalsIgnoreCase("day5"))
return day5;
else if(label.equalsIgnoreCase("day6"))
return day6;
else if(label.equalsIgnoreCase("day7"))
return day7;
else if(label.equalsIgnoreCase("day8"))
return day8;
else if(label.equalsIgnoreCase("day9"))
return day9;
else if(label.equalsIgnoreCase("day10"))
return day10;
else if(label.equalsIgnoreCase("day11"))
return day11;
else if(label.equalsIgnoreCase("day12"))
return day12;
else if(label.equalsIgnoreCase("day13"))
return day13;
else if(label.equalsIgnoreCase("day14"))
return day14;
else if(label.equalsIgnoreCase("day15"))
return day15;
else if(label.equalsIgnoreCase("day16"))
return day16;
else if(label.equalsIgnoreCase("day17"))
return day17;
else if(label.equalsIgnoreCase("day18"))
return day18;
else if(label.equalsIgnoreCase("day19"))
return day19;
else if(label.equalsIgnoreCase("day20"))
return day20;
else if(label.equalsIgnoreCase("day21"))
return day21;
else if(label.equalsIgnoreCase("day22"))
return day22;
else if(label.equalsIgnoreCase("day23"))
return day23;
else if(label.equalsIgnoreCase("day24"))
return day24;
else if(label.equalsIgnoreCase("day25"))
return day25;
else if(label.equalsIgnoreCase("day26"))
return day26;
else if(label.equalsIgnoreCase("day27"))
return day27;
else if(label.equalsIgnoreCase("day28"))
return day28;
else if(label.equalsIgnoreCase("day29"))
return day29;
else if(label.equalsIgnoreCase("day30"))
return day30;
else if(label.equalsIgnoreCase("day31"))
return day31;
else if(label.equalsIgnoreCase("day32"))
return day32;
else if(label.equalsIgnoreCase("day33"))
return day33;
else if(label.equalsIgnoreCase("day34"))
return day34;
else if(label.equalsIgnoreCase("day35"))
return day35;
return null;
}
/**
* 根据年月日得到当前月份下的天数
* @param year
* @param month
* @param days
* @return
*/
private int getDaysOfMonth(int year, int month, int days) {
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:days=31;break;
case 4:
case 6:
case 9:
case 11:days=30;break;
case 2:
{
if((year%4==0&& year%100!=0)|| year%400==0)
days=29;
else
days=28;
}
break;
default:break;
}
return days;
}
/**
* 设置当前被选日期
* @param arg
*/
public static void setCurrentSeletion(DayLabel arg)
{
CurrentSelection=arg;
}
/**
* 返回当前被选日期标签
* @return
*/
public static DayLabel getCurrentSelection()
{
return CurrentSelection;
}
/**
* 添加每个标签的鼠标监听
*/
private void addMouseListener() {
day1.addMouseListener(day1);
day2.addMouseListener(day2);
day3.addMouseListener(day3);
day4.addMouseListener(day4);
day5.addMouseListener(day5);
day6.addMouseListener(day6);
day7.addMouseListener(day7);
day8.addMouseListener(day8);
day9.addMouseListener(day9);
day10.addMouseListener(day10);
day11.addMouseListener(day11);
day12.addMouseListener(day12);
day13.addMouseListener(day13);
day14.addMouseListener(day14);
day15.addMouseListener(day15);
day16.addMouseListener(day16);
day17.addMouseListener(day17);
day18.addMouseListener(day18);
day19.addMouseListener(day19);
day20.addMouseListener(day20);
day21.addMouseListener(day21);
day22.addMouseListener(day22);
day23.addMouseListener(day23);
day24.addMouseListener(day24);
day25.addMouseListener(day25);
day26.addMouseListener(day26);
day27.addMouseListener(day27);
day28.addMouseListener(day28);
day29.addMouseListener(day29);
day30.addMouseListener(day30);
day31.addMouseListener(day31);
day32.addMouseListener(day32);
day33.addMouseListener(day33);
day34.addMouseListener(day34);
day35.addMouseListener(day35);
}
/**
* 初始化每一个标签
*/
private void init() {
day1=new DayLabel("");
day2=new DayLabel("");
day3=new DayLabel("");
day4=new DayLabel("");
day5=new DayLabel("");
day6=new DayLabel("");
day7=new DayLabel("");
day8=new DayLabel("");
day9=new DayLabel("");
day10=new DayLabel("");
day11=new DayLabel("");
day12=new DayLabel("");
day13=new DayLabel("");
day14=new DayLabel("");
day15=new DayLabel("");
day16=new DayLabel("");
day17=new DayLabel("");
day18=new DayLabel("");
day19=new DayLabel("");
day20=new DayLabel("");
day21=new DayLabel("");
day22=new DayLabel("");
day23=new DayLabel("");
day24=new DayLabel("");
day25=new DayLabel("");
day26=new DayLabel("");
day27=new DayLabel("");
day28=new DayLabel("");
day29=new DayLabel("");
day30=new DayLabel("");
day31=new DayLabel("");
day32=new DayLabel("");
day33=new DayLabel("");
day34=new DayLabel("");
day35=new DayLabel("");
}
/**
* 对DayPanel进行布局
*/
private void dayPanelLayout() {
GroupLayout jPanel2Layout = new GroupLayout(
this);
setLayout(jPanel2Layout);
jPanel2Layout
.setHorizontalGroup(jPanel2Layout
.createParallelGroup(
GroupLayout.Alignment.LEADING)
.addGroup(
jPanel2Layout
.createSequentialGroup()
.addContainerGap()
.addGroup(
jPanel2Layout
.createParallelGroup(
GroupLayout.Alignment.LEADING)
.addGroup(
jPanel2Layout
.createSequentialGroup()
.addComponent(
day1,
GroupLayout.DEFAULT_SIZE,
45,
Short.MAX_VALUE)
.addPreferredGap(
javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(
day2,
GroupLayout.DEFAULT_SIZE,
45,
Short.MAX_VALUE)
.addPreferredGap(
javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(
day3,
GroupLayout.DEFAULT_SIZE,
45,
Short.MAX_VALUE)
.addPreferredGap(
javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(
day4,
GroupLayout.DEFAULT_SIZE,
45,
Short.MAX_VALUE)
.addPreferredGap(
javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(
day5,
GroupLayout.PREFERRED_SIZE,
35,
GroupLayout.PREFERRED_SIZE)
.addPreferredGap(
javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(
day6,
GroupLayout.PREFERRED_SIZE,
34,
GroupLayout.PREFERRED_SIZE)
.addPreferredGap(
javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(
day7,
GroupLayout.DEFAULT_SIZE,
45,
Short.MAX_VALUE))
.addGroup(
jPanel2Layout
.createSequentialGroup()
.addComponent(
day8,
GroupLayout.DEFAULT_SIZE,
45,
Short.MAX_VALUE)
.addPreferredGap(
javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(
day9,
GroupLayout.DEFAULT_SIZE,
45,
Short.MAX_VALUE)
.addPreferredGap(
javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(
day10,
GroupLayout.DEFAULT_SIZE,
45,
Short.MAX_VALUE)
.addPreferredGap(
javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(
day11,
GroupLayout.DEFAULT_SIZE,
45,
Short.MAX_VALUE)
.addPreferredGap(
javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(
day12,
GroupLayout.DEFAULT_SIZE,
45,
Short.MAX_VALUE)
.addPreferredGap(
javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(
day13,
GroupLayout.DEFAULT_SIZE,
45,
Short.MAX_VALUE)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -