Java Scheduler中资源的自定义绘制

MindFusion.Diagramming for WinForms是一个能帮助你创建工作流和进程图表的.NET控件;数据库实体关系图表;组织图表;对象层次和关系图表;图表和树。它是基于对象-图表框,表格和箭头类型,将其归类分派给其他并结合成复杂的结构。该控件提供超过预先定义的50多种图表框,如自定义设计样式和对图表框着色等。

在此博客文章中,我们将说明如何基于特定条件在日历的“资源”视图中为单元格和资源着色。在我们的示例中,我们从Java Swing Scheduler的示例中获取 “资源表”示例,然后将其代码进行编辑,以着色与给定资源相对应的单元格的标题和背景,在我们的示例中,该示例为雇员:
在这里插入图片描述

我们还将添加工具提示,以显示鼠标悬停在与该员工相对应的单元格上的时间:
在这里插入图片描述

I.常规设置

我们将演示和解释的代码是“资源表”示例的扩展,您可以从以下位置下载:
该示例使用Java Swing调度库,该库作为对该项目的Jar引用提供。
在这里插入图片描述

我们创建Calendar类的实例,并设置其当前时间,日期和结束日期–这是在资源视图中可见的最终日期:
calendar = new Calendar();= new Calendar();
calendar.setCurrentTime(DateTime.now());.setCurrentTime(DateTime.now());
calendar.setDate(new DateTime(2020, 6, 8));.setDate(new DateTime(2020, 6, 8));
calendar.setEndDate(new DateTime(2020, 7, 7));.setEndDate(new DateTime(2020, 7, 7));
该日历类公开为定制时间表许多方法。我们首先将视图设置为CalendarView itemSettings,而resourceViewSettings类为我们提供了许多用于自定义日历外观的选项。我们使用它们来扭曲资源表的外观:
calendar.getItemSettings().getSelectedItemStyle().setHeaderFont(new Font(“Verdana”, Font.PLAIN, 9));.getItemSettings().getSelectedItemStyle().setHeaderFont(new Font(“Verdana”, Font.PLAIN, 9));
calendar.getItemSettings().getSelectedItemStyle().setHeaderTextAlignment(EnumSet.of(TextAlignment.MiddleLeft));.getItemSettings().getSelectedItemStyle().setHeaderTextAlignment(EnumSet.of(TextAlignment.MiddleLeft));
calendar.getItemSettings().getSelectedItemStyle().setHeaderTextShadowStyle(ShadowStyle.None);.getItemSettings().getSelectedItemStyle().setHeaderTextShadowStyle(ShadowStyle.None);


calendar.getItemSettings().getStyle().setHeaderFont(new Font(“Verdana”, Font.PLAIN, 9));.getItemSettings().getStyle().setHeaderFont(new Font(“Verdana”, Font.PLAIN, 9));
calendar.getItemSettings().getStyle().setHeaderTextAlignment(EnumSet.of(TextAlignment.MiddleLeft));.getItemSettings().getStyle().setHeaderTextAlignment(EnumSet.of(TextAlignment.MiddleLeft));
calendar.getItemSettings().getStyle().setHeaderTextShadowStyle(ShadowStyle.None);.getItemSettings().getStyle().setHeaderTextShadowStyle(ShadowStyle.None);
calendar.getItemSettings().getStyle().setHeaderTextShadowOffset(0);.getItemSettings().getStyle().setHeaderTextShadowOffset(0);


calendar.getResourceViewSettings().getBottomTimelineSettings().setFormat(“EEE (MM/dd)”);.getResourceViewSettings().getBottomTimelineSettings().setFormat(“EEE (MM/dd)”);
calendar.getResourceViewSettings().getBottomTimelineSettings().setSize(15);.getResourceViewSettings().getBottomTimelineSettings().setSize(15);
calendar.getResourceViewSettings().getBottomTimelineSettings().getStyle().setHeaderBrush(Brushes.White);.getResourceViewSettings().getBottomTimelineSettings().getStyle().setHeaderBrush(Brushes.White);
calendar.getResourceViewSettings().getBottomTimelineSettings().getStyle().setHeaderFont(new Font(“Verdana”, Font.BOLD, 10));.getResourceViewSettings().getBottomTimelineSettings().getStyle().setHeaderFont(new Font(“Verdana”, Font.BOLD, 10));
员工是Contact类的实例。创建它们后,我们会将它们添加到日历的联系人集合中。为每个联系人提供一个ID非常重要,因为这是我们稍后在代码中识别它们的方式:
Contact contact = new Contact(); contact = new Contact();
contact.setFirstName(“Mike”);.setFirstName(“Mike”);
contact.setId(“IdMike”);.setId(“IdMike”);
contact.setName(“Mike”);.setName(“Mike”);
calendar.getContacts().add(contact);.getContacts().add(contact);
代表资源任务的项目是约会实例。我们用代码创建它们,并将它们添加到Calendar应用程序的items集合中;
app = new Appointment();= new Appointment();
app.setStartTime(new DateTime(2006, 3, 27));.setStartTime(new DateTime(2006, 3, 27));
app.setEndTime(new DateTime(2006, 3, 28));.setEndTime(new DateTime(2006, 3, 28));
app.getContacts().add(calendar.getSchedule().getContacts().get(“IdMike”));.getContacts().add(calendar.getSchedule().getContacts().get(“IdMike”));
app.setHeaderText(“21965 Carbon Mesa Rd (1)”);.setHeaderText(“21965 Carbon Mesa Rd (1)”);
app.setPriority(0);.setPriority(0);
calendar.getSchedule().getItems().add(app);.getSchedule().getItems().add(app);
资源视图呈现与给定的资源, 位置, 项目, 任务等相对应的单元格行。可用选项是GroupType枚举的成员。在我们的示例中,我们按资源(例如员工)对视图进行分组:
calendar.setGroupType(GroupType.GroupByContacts);.setGroupType(GroupType.GroupByContacts);
至此,我们完成了常规设置,并继续编写可自定义应用程序的代码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值