Mm I tryied it and when I move the initical item its return an Exception:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at Horario.Horario2.onItemModified(Horario2.java:168) at Horario.Horario2$1.itemModified(Horario2.java:91) at com.mindfusion.scheduling.Calendar.onItemModified(Unknown Source) at com.mindfusion.scheduling.Calendar.a(Unknown Source) at com.mindfusion.scheduling.aS.complete(Unknown Source) at com.mindfusion.scheduling.Calendar.c(Unknown Source) at com.mindfusion.scheduling.Calendar.mouseReleased(Unknown Source) at java.desktop/java.awt.Component.processMouseEvent(Component.java:6636) at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3342) at java.desktop/java.awt.Component.processEvent(Component.java:6401) at java.desktop/java.awt.Container.processEvent(Container.java:2263) at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5012) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4844) at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:49 18) at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:454 7) at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4488) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307) at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2762) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4844) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715) at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPr ivilege(ProtectionDomain.java:85) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPr ivilege(ProtectionDomain.java:95) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743) at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPr ivilege(ProtectionDomain.java:85) at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchTh read.java:203) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThrea d.java:124) at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchTh read.java:113) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:10 9) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:10 1) at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Here is my code, if it could be of help to resolve the problem : public class Horario2 extends javax.swing.JFrame {
Calendar c = Calendar.getInstance();
/** * Creates new form Horario2 */ public Horario2() { initComponents();
//---------------------------calendario calendar1.setInteractiveItemType(MyEvent.class); calendar1.setCustomDraw(EnumSet.of(CustomDrawElements.TimetableItem)); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); setSize(screenSize);//estas dos funciones sirven para poner pantalla completa el jFrame calendar1.setTheme(ThemeType.Light);//elegimos colorines Container cp = getContentPane();//capa de panel cp.setLayout(new BorderLayout());//panel con una layout preestablecida cp.add(jPanel1, BorderLayout.PAGE_START);//coloco objetos donde me de la santisima gana cp.add(calendar1, BorderLayout.CENTER); calendar1.setCurrentView(CalendarView.Timetable); calendar1.getTimetableSettings().setTwelveHourFormat(false); calendar1.getTimetableSettings().setHeaderDateFormat("EEEE"); calendar1.getTimetableSettings().setStartTime(420); com.mindfusion.common.Duration duration1 = new com.mindfusion.common.Duration(1, 0, 0); calendar1.getTimetableSettings().setCellTime(duration1); calendar1.getTimetableSettings().setCellSize(50);
//______----------------------fechas c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);//dia de hoy + lunes me da la fecha del lunes int dia = c.get(Calendar.DAY_OF_MONTH); int mes = c.get(Calendar.MONTH) + 1; int anio = c.get(Calendar.YEAR);
DateTime date = new DateTime(anio, mes, dia);//inicializo la nueva fecha
calendar1.getTimetableSettings().getDates().clear(); for (int i = 0; i < 14; i++) { calendar1.getTimetableSettings().getDates().add(date.addDays(i)); } calendar1.getTimetableSettings().setVisibleColumns(14);//uso las fecha que me muetre a partir del dia Lunes 7 dias
//-----------------------------Listener calendar1.addCalendarListener(new CalendarAdapter() {
public void itemCreated(ItemEvent e) {
onDateClicked(e); } public void itemModified (ItemModifiedEvent e) { onItemModified(e); }
});
}
private void onDateClicked(ItemEvent e) { calendar1.beginInit(); int dayIndex = e.getItem().getStartTime().getDayOfWeek().getValue();
Appointment item = new Appointment(); item.setStartTime(e.getItem().getStartTime()); item.setEndTime(e.getItem().getEndTime()); item.setHeaderText(e.getItem().getHeaderText());
item.getStyle().setBrush(Brushes.LightSkyBlue);
// Create the recurrence pattern. Recurrence recurrence = new Recurrence(); recurrence.setPattern(RecurrencePattern.Weekly); recurrence.setDaysOfWeek(EnumSet.of(dia(dayIndex))); recurrence.setStartDate(e.getItem().getStartTime().addDays(6)); recurrence.setEndDate(e.getItem().getEndTime().addDays(6)); recurrence.setRecurrenceEnd(RecurrenceEnd.Never); item.setRecurrence(recurrence);
calendar1.getSchedule().getItems().add(item); calendar1.endInit();
} protected void onItemModified(ItemModifiedEvent e) { Item master = null;
if( e.getItem().getRecurrenceState() != RecurrenceState.Master) {master = e.getItem().getRecurrence().getMaster();}
if(master != null) { DateTime newStart = e.getItem().getStartTime(); DateTime newEnd = e.getItem().getEndTime();
DateTime start = master.getStartTime(); DateTime end = master.getEndTime();
master.setStartTime(new DateTime(start.getYear(), start.getMonth(), start.getDay(), newStart.getHour(), newStart.getMinute(), newStart.getSecond()));
master.setEndTime(new DateTime(end.getYear(), end.getMonth(), end.getDay(), newEnd.getHour(), newEnd.getMinute(), newEnd.getSecond()));
master.getRecurrence().clearExceptions();
} }
public DayOfWeek dia(int i) { DayOfWeek a = DayOfWeek.Monday; switch (i) { case 1: a = DayOfWeek.Monday; break; case 2: a = DayOfWeek.Tuesday; break; case 3: a = DayOfWeek.Wednesday; break; case 4: a = DayOfWeek.Thursday; break; case 5: a = DayOfWeek.Friday; break; case 6: a = DayOfWeek.Saturday; break; default: a = DayOfWeek.Sunday; break;
}
return a; }
|