我试图用不同的颜色在JCalendar中设置特定日期,具体取决于数据库中是否有针对该日期的计划,该日期在数据库中存储为“ yyyy-MM-
dd”,我在这里看到过类似的帖子在stackOverflow上,但我无法使其正常工作。
我不确定“ component [day]
.setBackground(Color.green)”的工作方式,以及如何将其设置为仅在数据库中已为其计划好的日期的日期
public void kalender() {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_MONTH, 1);
int offset = cal.get(Calendar.DAY_OF_WEEK);
int mon = kalender.getMonthChooser().getMonth() + 1;
int yr = kalender.getYearChooser().getYear();
JPanel jPanel = kalender.getDayChooser().getDayPanel();
Component component[] = jPanel.getComponents();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String kalenderdatum = format.format(kalender.getDate());
System.out.println(kalenderdatum);
String sql2 = "SELECT DATUM FROM MOTE";
try {
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(sql2);
while (rs.next()) {
String datumet = rs.getString("DATUM");
String aret = datumet.substring(0, 4);
int year = Integer.parseInt(aret);
String manaden = datumet.substring(5,7);
int month = Integer.parseInt(manaden);
String dagen = datumet.substring(8,10);
int day = Integer.parseInt(dagen);
if(yr == year && mon == month)
{
component[day].setBackground(Color.green);
}
}
使用JCalendar API的一种解决方案是创建您自己的实例,IDateEvaluator
并检查日期中是否包含“特殊”内容。
1.转换
首先,我建议将日期(yyyy-MM-dd
)放入列表并将其转换为Date
对象。例如:
List<String> mysqlDates = Arrays.asList("2019-02-14", "2019-03-06"); // Assume you've got this info somehow
List<Date> specialDates = convertToDates(mysqlDates);
借助以下功能:
public static List<Date> convertToDates(List<String> dateStrings) throws ParseException {
List<Date> dates = new ArrayList<>();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
for (String dateString : dateStrings) {
dates.add(df.parse(dateString));
}
return dates;
}
2.创建您的SpecialDateEvaluator
然后,您需要创建自己的日期评估器,以接受Date
将要以不同方式处理的对象。一个简单的例子如下:
public class SpecialDateEvaluator implements IDateEvaluator {
private final List<Date> specialDates;
public SpecialDateEvaluator(List<Date> specialDates) {
this.specialDates = specialDates;
}
@Override
public boolean isSpecial(Date date) {
for (Date d : specialDates) {
if (d.equals(date)) {
return true;
}
}
return false;
}
@Override
public Color getSpecialForegroundColor() {
return Color.black;
}
@Override
public Color getSpecialBackroundColor() {
return Color.red;
}
@Override
public String getSpecialTooltip() {
return null;
}
@Override
public boolean isInvalid(Date date) {
return false;
}
@Override
public Color getInvalidForegroundColor() {
return null;
}
@Override
public Color getInvalidBackroundColor() {
return null;
}
@Override
public String getInvalidTooltip() {
return null;
}
}
3.使用日期评估器
要使用评估器,您需要将其添加到中JDayChooser
,以获取Date
对象列表,然后Calendar
再次设置来刷新视图。例如:
JCalendar c = new JCalendar();
c.getDayChooser().addDateEvaluator(new SpecialDateEvaluator(specialDates));
c.setCalendar(Calendar.getInstance());
要查看此示例的完整示例(使用main方法),请参见示例gist。
问题内容: 我已经开发了一个Java Swing应用程序。 如何设置特定JDayChooser日期的背景颜色? 谢谢 问题答案: 终于找到了解决方法:D
我有一个方法希望使用Spring运行一次,它需要在给定的(或)。我计划将该方法应该执行的所有日期持久化到数据源。它应该异步运行。 一种方法是每天检查数据库中的日期,如果日期已过且尚未执行,则执行该方法。有没有更好的方法? 我知道Spring提供了和。我正在查看界面中的。我需要创建Spring托管bean来调用我的方法吗?或者有更简单的注释可以做到这一点吗?举个例子真的很有帮助。 (也看了这里。)
问题内容: 这是我的SQL Server表 这似乎很容易做到,但我不知道为什么会被卡住。我只想为每个id选择max(date)和该max(date)处的值。我想忽略相对于每个ID而言不是max(date)的所有其他日期。 这是我希望表格看起来像的样子: 我尝试通过使用max(date)进行分组,但没有进行任何分组。我不确定自己在做什么错。在此先感谢您的帮助! 问题答案: 您可以使用以下内容: 观看
我的目标是找到一个Android库,它允许我基于数组在日历视图上标记各种日期。日期可能是连续的,也可能不是连续的。我的理想方案是更改每个日期的背景色。重要的复杂性是,我直到运行时才知道这个颜色,因为它来自服务器查询。 我一整天都在研究这个,我最大的希望似乎是(github)。然而,我发现他们的代码有些难以理解,这是我的责任,但我完全卡住了。 我在XML布局中添加了如下日历: 然后在我的活动中,我有
问题内容: 我想在的日期选择器中禁用特定的日期。 我正在使用CSS作为组件。 我要禁用的日期将根据组合中先前值的选择而动态更改。 我相信应该可以,尽管不确定。 我怎样才能做到这一点 ? 问题答案: 我假设您正在使用Angular-UI中的指令。该属性使您可以禁用某些日期(例如,周末)。看到这个笨蛋http://plnkr.co/edit/gGAU0L?p=preview 如果要基于选择动态禁用日期
问题内容: 我的程序使用s来打开表单,并以我要用于用户选择日期的形式使用,然后供我将其用于其他方法。 我已经下载了图书馆。我阅读了一些示例代码,但仍不确定如何执行。我有一个想法,在表单中按下一个按钮(选择日期),然后像打开一个小窗口一样,当选择了日期时,它将在表单中显示为TextField。 有人可以推荐我一些麻烦最少的方法吗? 问题答案: 我有一个想法,在表单中您按下一个按钮(选择日期),并且像