我正在使用解决方案中的代码在Add specific background colors to JDaychooser Dates的toedter的JCalendar中设置特定日期的颜色。此解决方案的问题在于它为每个月设置了不同的日期,因为每个月的第一天是不同的。
在我的例子中,我添加了5月4日和9月4日的事件arraylist。+ 9从5月开始工作,但在9月它将选择7而不是因为该月的第一天从+6开始。
我想知道是否有办法获得本月的开始日期,但我似乎找不到在API文档中执行此操作的方法。
继承我的代码:
Calendar cal = Calendar.getInstance();
cal.setTime(calendar.getDate());
int day = cal.get(Calendar.DAY_OF_MONTH);
int month = cal.get(Calendar.MONTH);
int year = cal.get(Calendar.YEAR);
JPanel jpanel = calendar.getDayChooser().getDayPanel();
Component component[] = jpanel.getComponents();
//arraylist of events
for(int i = 0; i < events.size(); i++)
{
//selected month and year on JCalendar
if(month == events.get(i).getMonth() && year == events.get(i).getYear())
{
//this value will differ from each month due to first days of each month
component[ events.get(i).getDay() + 9 ].setBackground(Color.blue);
}
}
答案 0 :(得分:2)
您需要的是获得该月第一天的偏移量。分析您知道的日历与星期几相关联。
Calendar cal = Calendar.getInstance();
cal.setTime(calendar.getDate());
int day = cal.get(Calendar.DAY_OF_MONTH);
int month = cal.get(Calendar.MONTH);
int year = cal.get(Calendar.YEAR);
JPanel jpanel = calendar.getDayChooser().getDayPanel();
Component component[] = jpanel.getComponents();
//arraylist of events
for(int i = 0; i < events.size(); i++)
{
//selected month and year on JCalendar
if(month == events.get(i).getMonth() && year == events.get(i).getYear())
{
// Calculate the offset of the first day of the month
cal.set(Calendar.DAY_OF_MONTH,1);
int offset = cal.get(Calendar.DAY_OF_WEEK) - 1;
//this value will differ from each month due to first days of each month
component[ events.get(i).getDay() + offset ].setBackground(Color.blue);
}
}
这有意义吗?
答案 1 :(得分:0)
我为面板的七个第一个对象(周日到周六)添加了一个常量
component[ events.get(i).getDay() + offset + 7].setBackground(Color.blue);
它对我有用
答案 2 :(得分:0)
一个简单的解决方案就是你必须在Calender中获得每个Dare面板然后你可以轻松地改变它的颜色。
看下面简单的例子。
jPanel2 = jCalendar1.getDayChooser().getDayPanel();
Component component[] = jPanel2.getComponents();
for (int i = 1; i <8 ; i++) {
component[i].setBackground(Color.red);
}
这会有所帮助。